perm filename SUB11.XGP[KL,SYS] blob
sn#307746 filedate 1977-10-05 generic text, type T, neo UTF8
/FONT#0=FIX20.FNT[XGP,SYS]
/BMAR=1
/TMAR=128
/RMAR=1699
/LMAR=128
/PMAR=2065
/XLINE=4
SAIL JBR 15:09:35 Wednesday, October 5, 1977 LQ+17H.4M.11S.
SUB11.PAL[KL,SYS] Created 14:36 Thursday, March 24, 1977 NM+5D.0H.27M.57S.
SSSSSSSSS UUU UUU BBBBBBBBBBBB 111 111
SSSSSSSSS UUU UUU BBBBBBBBBBBB 111 111
SSSSSSSSS UUU UUU BBBBBBBBBBBB 111 111
SSS SSS UUU UUU BBB BBB 111111 111111
SSS SSS UUU UUU BBB BBB 111111 111111
SSS SSS UUU UUU BBB BBB 111111 111111
SSS UUU UUU BBB BBB 111 111
SSS UUU UUU BBB BBB 111 111
SSS UUU UUU BBB BBB 111 111
SSSSSSSSS UUU UUU BBBBBBBBBBBB 111 111
SSSSSSSSS UUU UUU BBBBBBBBBBBB 111 111
SSSSSSSSS UUU UUU BBBBBBBBBBBB 111 111
SSS UUU UUU BBB BBB 111 111
SSS UUU UUU BBB BBB 111 111
SSS UUU UUU BBB BBB 111 111
SSS SSS UUU UUU BBB BBB 111 111
SSS SSS UUU UUU BBB BBB 111 111
SSS SSS UUU UUU BBB BBB 111 111
SSSSSSSSS UUUUUUUUU BBBBBBBBBBBB 111111111 111111111
SSSSSSSSS UUUUUUUUU BBBBBBBBBBBB 111111111 111111111
SSSSSSSSS UUUUUUUUU BBBBBBBBBBBB 111111111 111111111
SAIL JBR 15:09:35 Wednesday, October 5, 1977 LQ+17H.4M.11S.
SUB11.PAL[KL,SYS] Created 14:36 Thursday, March 24, 1977 NM+5D.0H.27M.57S.
PPPPPPPPPPPP AAA LLL
PPPPPPPPPPPP AAA LLL
PPPPPPPPPPPP AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPPPPPPPPPPP AAA AAA LLL
PPPPPPPPPPPP AAA AAA LLL
PPPPPPPPPPPP AAA AAA LLL
PPP AAAAAAAAAAAAAAA LLL
PPP AAAAAAAAAAAAAAA LLL
PPP AAAAAAAAAAAAAAA LLL
PPP AAA AAA LLL
PPP AAA AAA LLL
PPP AAA AAA LLL
PPP AAA AAA LLLLLLLLLLLLLLL
PPP AAA AAA LLLLLLLLLLLLLLL
PPP AAA AAA LLLLLLLLLLLLLLL
KLDCP.PAL[KL,SYS] PRM11.PAL[KL,SYS] BEG11.PAL[KL,SYS] CONS11.PAL[KL,SYS] SUB11.PAL[KL,SYS]
FD11.PAL[KL,SYS] DTA11.PAL[KL,SYS] BOOT.PAL[KL,SYS] APT11.PAL[KL,SYS] BR11.PAL[KL,SYS]
SBST11.PAL[KL,SYS]
Switch Settings: L[PALX11] C[KLDCP.ATC] % I 5000S 78V 120W X[Noqueue] ↑
Fonts: F[FIX20.FNT[XGP,SYS],,]
LREC File: SAIL:KLDCP.LRC[KL,SYS]
␈↓& SUB11.PAL[KL,SYS] 10/05/77 Page 1␈↓'α
001 COMMENT ⊗ VALID 00049 PAGES
002 C REC PAGE DESCRIPTION
003 C00001 00001
004 C00005 00002 .SBTTL BASIC INITIALIZATION ROUTINE, 19-AUG-75
005 C00011 00003 .SBTTL SET EOP INTERVAL TALLY
006 C00013 00004 2$: PMSG <END PASS >
007 C00014 00005 .SBTTL ERROR HALT
008 C00016 00006 .SBTTL PRINT ASCIZ MESSAGE (PNTAL)
009 C00018 00007 .SBTTL PRINT BUFFER LOAD ROUTINE
010 C00020 00008 .SBTTL TELETYPE PRINT OUTPUT ROUTINE
011 C00022 00009 .SBTTL TELETYPE DRIVER
012 C00024 00010 TST CTRLOF
013 C00026 00011 .SBTTL LINE PRINTER DRIVER
014 C00030 00012 OPERATOR INTERRUPT TYPEIN CHECKS
015 C00032 00013 .SBTTL PRINT CRLF
016 C00034 00014 .SBTTL PRINT LOWER 18 BITS OF 36 BIT NUMBER
017 C00036 00015 $PRT36: MOV 4(R1),R0 GET THE WORD
018 C00038 00016 .SBTTL PRINT OCTAL
019 C00040 00017 .SBTTL CONVERT BINARY TO DECIMAL AND TYPE ROUTINE
020 C00043 00018 .SBTTL TTY INPUT ROUTINE TTICHR
021 C00045 00019 .SBTTL TTIYES YES OR NO ROUTINE
022 C00046 00020 .SBTTL READ SWITCH REGISTER
023 C00048 00021 .SBTTL INPUT A STRING FROM TTY
024 C00050 00022 82$: CMPB (R1),#141
025 C00052 00023 SPECIAL CHAR PROCESS
026 C00054 00024 SPECIAL CHARACTERS
027 C00055 00025 .SBTTL CTY & FSTTY DL11 DRIVERS
028 C00058 00026 .SBTTL READ AN OCTAL NUMBER FROM THE TTY
029 C00060 00027 .SBTTL READ A DECIMAL NUMBER FROM THE TTY
030 C00062 00028 .SBTTL READ A 12 DIGIT OCTAL (36 BIT) NUMBER
031 C00064 00029 3$: MOV R5,$INPTC RESET INPUT POINTER
032 C00066 00030 8$: TSTB $0FLG
033 C00068 00031 .SBTTL SIGNED MULTIPLY SUBROUTINE
034 C00070 00032 .SBTTL BREAK CHARACTER
035 C00072 00033 .SBTTL TELETYPE INPUT TERMINATION CHECK
036 C00074 00034 .SBTTL INPUT & CHECK OCTAL NUMBER
037 C00075 00035 .SBTTL SHIFT R0 RIGHT/LEFT ROUTINES
038 C00077 00036 .SBTTL SMALL TIME DELAY
039 C00078 00037 FATAL VECTOR INTERRUPT
040 C00079 00038 .SBTTL EMT DECODER
041 C00081 00039 $PNTNBR EMT + 30
042 C00083 00040 $DPSVT EMT + 110
043 C00085 00041 $RPLKUP EMT + 170
044 C00087 00042 .SBTTL POWER DOWN AND UP ROUTINES
045 C00090 00043 .SBTTL EXIT SUBROUTINE
046 C00091 00044 .SBTTL PDP10 OPERATIONS
047 C00098 00045 $D10ADR:MOV #L10ADR,R4
048 C00101 00046 START MICROCODE
049 C00102 00047 PDP-10 INSTRUCTION EXECUTE
050 C00103 00048 PDP-10 CONTROLLED STOP ROUTINE
051 C00105 00049 .SBTTL CLOCK INITIALIZATION, INTERRUPTS
052 C00107 ENDMK
053 C⊗;
␈↓& BASIC INITIALIZATION ROUTINE, 19-AUG-75 SUB11.PAL[KL,SYS] 10/05/77 Page 2␈↓'α
001 .SBTTL BASIC INITIALIZATION ROUTINE, 19-AUG-75
002
003 ;*THIS SUBROUTINE PERFORMS THE MOST ELEMENTARY SET UP FOR THE CPU
004 ;*THIS ROUTINE MUST BE EXECUTED BY ALL OF THE POSSIBLE START
005 ;*OPTIONS PRIOR TO ANY OTHER SUBROUTINE
006
007 PRM11 011 003 PRM11 011 021 $$ILOAD:MOV #STACK,SP ;START HERE FIRST TIME
008 SBST11 004 093 PRM11 011 015 MOV #<<.DELAY-$ILDCLR>/2>,R1
009 SBST11 004 093 PRM11 011 014 MOV #$ILDCLR,R0
010 PRM11 011 014 1$: CLR (R0)+ ;CLEAR SPECIAL CONTROL WORDS
011 PRM11 011 015 DEC R1
012 CONS11 002 007 BGT 1$
013 MOV #17,CLKDFL+4 ;INITIAL DEFAULT, ALL 4 CACHES
014 MOV #36,PEBITS ;INITIAL DEFAULT, AR/ARX, FM, CRAM, DRAM
015 ;AND NOT FS PROBE, PARITY STOP ENABLES
016 PRM11 011 022 002 130 JSR PC,$CKSUM ;CHECKSUM "KLDCP"
017 PRM11 011 014 MOV R0,$ILDSUM ;SAVE
018
019 PRM11 012 045 PRM11 011 043 $SBRINT:MOV #CPUPR,PS ;SET CPU PRIORITY ;NORMAL START (100000)
020 PRM11 011 003 PRM11 011 021 MOV #STACK,SP ;SET THE STACK POINTER
021
022 KLDCP 003 017 .IF DF %%DDT
023 ; MOV #CPUPR,%DDTS ;CPU PRIORITY FOR DDT
024 PRM11 011 021 MOV @#14,-(SP) ;PUSH 14 AND 16
025 PRM11 011 021 MOV @#16,-(SP) ;TO ALLOW DDT BREAKPOINT TRAPS
026 .ENDC
027
028 PRM11 011 014 CLR R0 ;SET ENTIRE VECTOR AREA TO:
029 037 003 PRM11 011 014 1$: MOV #$FATLE,(R0)+ ; ;ADDRESS OF ERROR HANDLER
030 PRM11 012 043 PRM11 011 014 MOV #PR7,(R0)+ ; ;PR7
031 PRM11 011 014 CMP R0,#1000
032 CONS11 002 007 BLT 1$
033
034 037 007 PRM11 011 027 MOV #$TIMOT,@#ERRVEC ;TIME OUT BUS ERROR VECTOR
035 037 011 PRM11 011 028 MOV #$RESVD,@#RESVEC ;RESERVED INSTRUCTION VECTOR
036 042 003 PRM11 011 033 MOV #$PWRDN,@#PWRVEC ;POWER FAIL VECTOR
037
038 .LIF DF BPTASB
039 PRM11 011 032 MOV #$BRKPT,@#IOTVEC ;IOT VECTOR
040
041 038 008 PRM11 011 034 MOV #$EMTRP,@#EMTVEC ;EMT VECTOR
042
043 KLDCP 003 017 .IF DF %%DDT
044 PRM11 011 021 MOV (SP)+,@#16 ;FOR DDT, POP BREAKPOINT TRAP
045 PRM11 011 021 MOV (SP)+,@#14
046 .IFF
047 PRM11 011 031 MOV #.BCCT,@#BPTVEC ;SET BP VECTOR
048 .ENDC
049
050 KLDCP 002 006 .IF DF SAILVR
051 PRM11 011 022 049 004 JSR PC,CLKSTA ;CLOCK START (AFTER CLOBBERING INTERRUPT
;S)
052 PRM11 012 045 PRM11 011 034 MOV #CPUPR,@#EMTVEC+2 ;SO EMTS DON'T AFFECT PROCESSOR PRIORITY
053 .ENDC
054
055 KLDCP 003 018 .IF DF TELASB
056 PRM11 035 023 BEG11 002 021 MOV #DLRTS,@$FSTKS ;INITIALIZE
057 CONS11 062 008 BEG11 002 025 MOV #FSRINT,@$FSTRV ;SETUP FS KL11E RECEIVE TRAP VECTOR
058 CONS11 062 114 BEG11 002 026 MOV #FSTINT,@$FSTTV ;SETUP FS KL11E TRANSMIT TRAP VECTOR
059 PRM11 011 014 MOV #40000.,R0 ;40000*2.36USEC = 94.4 MS
060 PRM11 011 014 SOB R0,. ;WAIT FOR DATA SET TO HANG UP
061 PRM11 035 021 BEG11 002 021 BIS #DLRTS!DLDTR!DLDIE,@$FSTKS ;SET DATA TERM READY AND DATA SET INT EN
;B
062 ;LEAVE REQUEST TO SEND UP ALTHOUGH WE DON'T USE IT
063 .ENDC ;IF DF TELASB
064
065 SBST11 009 055 PRM11 011 014 11$: MOV #BUFCLR,R0 ;CLEAR BUFFER STORAGE BETWEEN:
066 PRM11 011 014 21$: CLR (R0)+ ;BUFCLR: AND .DELAY !
067 PRM11 011 014 SBST11 004 093 CMP R0,#$ILDCLR
068 CONS11 013 027 BNE 21$
069 PRM11 011 021 MOV SP,$KONSP
070
071 PRM11 011 004 CLR CONSOL-2
072
073 PRM11 003 036 TTPINI ;RESET TTY POINTERS
074
075 MOV #110.,$PGWID ;SET PAGE WIDTH PARAMETER (LA36!)
␈↓& BASIC INITIALIZATION ROUTINE, 19-AUG-75 SUB11.PAL[KL,SYS] 10/05/77 Page 2.1␈↓'α
076 MOV #0,$TTYFL ;SET FILL PARAMETER TO (LA36!)
077 PRM11 004 026 PFORCE ;MUST TYPE STARTUP
078 002 122 PRM11 011 027 MOV #NOPAR,ERRVEC ;SET BUS TIMEOUT IN CASE NO PARITY
079 043 015 PRM11 034 011 MOV #MEMPE,MMLPIV ;SETUP PARITY VECTOR
080 PRM11 034 022 PRM11 034 013 MOV #MMPIE,MMLPBA ;ENABLE PARITY ERRORS
081 037 007 PRM11 011 027 MOV #$TIMOT,ERRVEC ;RESTORE BUS TIMEOUT
082
083 TST $ONETM
084 CONS11 005 001 BNE 3$
085
086 .LIF DF BPTASB
087 PRM11 011 022 JSR PC,.CB ;CLEAR BP'S
088
089 KLDCP 002 006 .IF DF SAILVR
090 KLDCP 003 003 PMSG <\Stanford KLDCP\>
091 .IFF
092 PRM11 011 004 PMSG <\DECSYSTEM10 DIAGNOSTIC CONSOLE\VERSION >
093 KLDCP 002 005 PRM11 011 014 MOV #MCNVER,R0
094 PRM11 004 018 PNTOCS
095 PRM11 004 010 PNTCI
096 '.
097 KLDCP 002 004 PRM11 011 014 MOV #DECVER,R0
098 PRM11 004 018 PNTOCS
099 ;.IF DF SAILVR
100 ; PMSG <, Stanford version >
101 ; MOV #SAILVR,R0
102 ; PNTOCS
103 ;.ENDC
104 PRM11 011 045 PMSG <\11 SWR = >
105 PRM11 011 045 PRM11 011 014 MOV SWR,R0
106 PRM11 004 017 PNTOCT ;PRINT CONSOLE SWITCHES
107 PRM11 004 012 PCRLF
108 .ENDC
109
110 PRM11 011 022 BR11 002 003 3$: JSR PC,DTEINI ;DTE20 INITIALIZATION
111
112 KLDCP 002 006 .IF NDF SAILVR
113 TST DEVTYP ;USING RP04 ?
114 CONS11 004 051 BLE 4$ ;NO
115 PRM11 005 027 RPLOAD ;YES, INIT & LOAD PACK
116 CONS11 004 051 BCC 4$
117 PRM11 005 042 RPERROR ;FAILED
118 .ENDC
119
120 CONS11 002 003 4$: JMP CONSL ;NOW TO CONSOLE
121
122 NOPAR: RTI ;NO PARITY REGISTER
123
124 PRM11 011 014 $CMCLR: MOV #$CMTAG,R0 ;CLEAR COMMON STORAGE
125 PRM11 011 014 1$: CLR (R0)+
126 PRM11 011 014 CMP R0,#MONCTL
127 CONS11 002 007 BLT 1$
128 PRM11 011 022 RTS PC
129
130 CONS11 006 175 $CKSUM: CLR $KDCEN ;CLEAR ONLY CHANGEABLE LOCATION
131 BEG11 002 006 PRM11 011 015 MOV #START,R1
132 PRM11 011 014 CLR R0
133 PRM11 011 015 PRM11 011 014 2$: ADD (R1)+,R0 ;CHECKSUM "KLDCP"
134 PRM11 011 015 SBST11 002 056 CMP R1,$$FF
135 CONS11 002 031 BLOS 2$
136 PRM11 011 022 RTS PC
␈↓& END OF PASS ROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 3␈↓'α
001 .SBTTL SET EOP INTERVAL TALLY
002
003 PRM11 011 014 $EOPSET:MOV R0,$ENDCT ;SET EOP INTERVAL TALLY
004 PRM11 008 043 EXIT
005
006 ;CONSOLE SET EOP INTERVAL
007
008 PRM11 003 029 .EP: TTISDL
009 CONS11 002 007 BCS 1$
010 PRM11 003 024 TTIDEC ;SPECIFIED AS DECIMAL INTERVAL
011 CONS11 002 007 BCS 1$
012 PRM11 011 014 MOV R0,$ENDCT
013 CLR $EOPCT
014 CONS11 003 001 JMP $KONSL
015 CONS11 060 034 1$: JMP $PARAM
016
017 .SBTTL END OF PASS ROUTINE
018
019 PRM11 011 019 $EOP: MOV #$PASS,R5
020 PRM11 011 019 INC (R5) ;INCREMENT THE PASS NUMBER
021 PRM11 011 019 CMP (R5),#30001. ;LIMIT MAX COUNT TO 30000
022 CONS11 004 051 BLT 4$
023 PRM11 011 019 CLR (R5)
024 PRM11 011 019 INC (R5)
025 MOV $ENDCT,$EOPCT ;RESET REPORT INTERVAL
026
027 PRM11 011 019 PRM11 011 045 4$: MOV (R5),SWR ;DISPLAY PASS COUNT
028 PRM11 005 011 SWITCH ;READ THE SWITCH REGISTER
029
030 PRM11 011 014 PRM11 002 005 BIT R0,#ABORT ;ABORT AFTER CURRENT PASS?
031 CONS11 002 007 BNE 1$ ;YES
032
033 DEC $EOPCT ;DECREMENT EOP
034 CONS11 005 001 BGT 3$
035 CONS11 002 031 BR 2$
036
037 1$: MOV #1,$ITERA ;SET ITERATION SO WE WILL EXIT
␈↓& ERROR EOP SUB11.PAL[KL,SYS] 10/05/77 Page 4␈↓'α
001 PRM11 008 006 2$: PMSG <END PASS >
002
003 PRM11 011 019 PRM11 011 014 MOV (R5),R0 ;PASS COUNT TO R0
004 PRM11 004 019 PNTDEC
005 PRM11 004 012 PCRLF
006
007 MOV $ENDCT,$EOPCT ;RESTORE COUNTER
008
009 3$: DEC $ITERA ;DECREMENT ITERATION COUNT
010 004 016 BEQ $ERREOP
011 CLR $ITERA
012 PRM11 008 043 EXIT
013
014 .SBTTL ERROR EOP
015
016 $ERREOP:TST MONCTL ;STAND ALONE ?
017 004 021 BNE $EROP ;NO, *WHAT TO DO ??*
018 CLR TENRUN ;TURN OFF TEN SUPPORT
019 CLR PRGRUN ;YES, ALLOW "J" AGAIN
020
021 CONS11 002 003 $EROP: JMP CONSL ;MONITOR, TO NEXT SCRIPT ENTRY
␈↓& ERROR HALT SUB11.PAL[KL,SYS] 10/05/77 Page 5␈↓'α
001 .SBTTL ERROR HALT
002
003 PRM11 011 014 $PRGHLT:PUSH R0
004 PRM11 008 006 PMSG <\PRG>
005 005 016 BR $PH2
006
007 PRM11 011 014 $ERRHLT:PUSH R0
008 PRM11 005 011 SWITCH
009 PRM11 011 014 PRM11 002 015 BIT R0,#ERSTOP ;STOP ON ERROR ?
010 CONS11 002 007 BNE 1$ ;YES
011 PRM11 011 014 POP R0
012 PRM11 008 043 EXIT ;NO, KEEP GOING
013
014 PRM11 008 006 1$: PMSG <\ERROR>
015
016 PRM11 005 008 $PH2: SETFLG
017 .HCFLG ;ALLOW HALT CONTINUE
018
019 PRM11 011 021 $PH1: MOV (SP)+,$R0SAV ;SETUP SO "RG" CAN PRINT
020 PRM11 011 021 MOV (SP)+,$R5SAV
021 PRM11 011 021 MOV (SP)+,$R4SAV
022 PRM11 011 021 MOV (SP)+,$R3SAV
023 PRM11 011 021 MOV (SP)+,$R2SAV
024 PRM11 011 021 MOV (SP)+,$R1SAV
025 PRM11 011 021 MOV (SP)+,.HCADR
026 PRM11 011 021 MOV (SP)+,$PSSAV
027 PRM11 011 021 MOV SP,$SPSAV
028 PRM11 008 006 PMSG < HALT AT >
029
030 PRM11 011 014 MOV .HCADR,R0 ;GET ADDRESS
031 PRM11 011 014 SUB #2,R0 ;COMPUTE ACTUAL ADDRESS
032 PRM11 004 017 PNTOCT ;PRINT ERROR HALT ADDRESS
033 PRM11 004 012 PCRLF
034 BEG11 002 009 JMP $CONSL ;RETURN TO MONITOR
035
036 .HC: TST .HCFLG
037 CONS11 002 007 BNE 1$
038 CONS11 005 004 JMP $CMDER ;HC NOT ALLOWED
039 1$: CLR .HCFLG
040
041 .LIF DF BPTASB
042 PRM11 011 022 JSR PC,.BCHC
043
044 PRM11 011 020 MOV $SPSAV,R6
045 PRM11 011 043 MOV $PSSAV,PS
046 JMP @.HCADR
␈↓& PRINT ASCII CHARACTER (PNTCHR) SUB11.PAL[KL,SYS] 10/05/77 Page 6␈↓'α
001 .SBTTL PRINT ASCIZ MESSAGE (PNTAL)
002
003 PRM11 011 014 $PNTAL: BICB #200,(R0) ;CLEAR JUNK
004 PRM11 011 014 TSTB (R0) ;REACHED EOL YET?
005 CONS11 005 001 BEQ 3$ ;YES
006 TST HLPPNT ;PRINTING A HELP FILE
007 CONS11 004 051 BNE 4$ ;YES
008 PRM11 011 014 PRM11 013 017 CMPB (R0),#BKARW ;BACKARROW (-)?
009 CONS11 002 031 BEQ 2$ ;YES
010 PRM11 011 014 PRM11 013 016 CMPB (R0),#BKSLH ;BACKSLASH (\)?
011 CONS11 002 007 BEQ 1$
012 PRM11 011 014 PRM11 011 015 4$: MOVB (R0)+,R1 ;PUT CHAR IN R1
013 PRM11 004 035 PLDBUF ;LOAD INTO OUTPUT BUFFER
014 006 003 BR $PNTAL ;DO TILL E-O-L
015
016 PRM11 013 010 PRM11 011 015 1$: MOV #CR,R1 ;BACKSLASH
017 PRM11 004 035 PLDBUF ;OUTPUT CR & LF
018 PRM11 013 007 PRM11 011 015 MOV #LF,R1
019 PRM11 004 035 PLDBUF
020 PRM11 011 014 11$: INC R0
021 006 003 BR $PNTAL
022
023 2$: CLR CTRLOF ;CLEAR CONTROL O FLAG
024 PRM11 004 032 PRINTT ;BACKARROW, PRINT BUFFER
025 CONS11 003 018 BR 11$
026
027 006 038 3$: BR $$PNTX
028
029 .SBTTL PRINT ASCII NUMBER (PNTNBR)
030
031 PRM11 011 014 $PNTNBR:BIC #177770,R0
032 PRM11 011 014 BIS #'0,R0
033
034 .SBTTL PRINT ASCII CHARACTER (PNTCHR)
035
036 PRM11 011 014 PRM11 011 015 $PNTCHR:MOVB R0,R1
037 PRM11 004 035 PLDBUF
038 PRM11 008 043 $$PNTX: EXIT
039
040 PRM11 013 013 PRM11 011 014 $PSPACE: MOV #SPACE,R0
041 006 036 BR $PNTCHR
042
043 PRM11 013 015 PRM11 011 014 $PSLASH: MOV #SLASH,R0
044 006 036 BR $PNTCHR
045
046 PRM11 013 014 PRM11 011 014 $PCOMMA: MOV #COMMA,R0
047 006 036 BR $PNTCHR
048
049 PRM11 013 005 PRM11 011 014 $PTAB: MOV #TAB,R0
050 006 036 BR $PNTCHR
␈↓& PRINT BUFFER LOAD ROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 7␈↓'α
001 .SBTTL PRINT BUFFER LOAD ROUTINE
002
003 PRM11 011 014 $PLDBUF:PUSH R0
004 PRM11 011 014 MOV $OUTPT,R0
005 PRM11 011 015 BIC #177600,R1 ;STRIP TO 7 BITS
006 PRM11 011 015 PRM11 011 014 MOVB R1,(R0)+ ;PUT CHAR IN BUFFER
007 PRM11 011 014 CLRB (R0) ;INSERT TRAILING NULL
008 PRM11 011 014 MOV R0,$OUTPT
009 PRM11 011 014 POP R0
010 CMP $OUTPT,#$OUTBF+140.;EXCEEDED BUFFER CAPACITY
011 CONS11 002 031 BGE 2$
012
013 PRM11 013 007 PRM11 011 015 1$: CMPB #LF,R1 ;WAS CHAR LINE FEED
014 CONS11 002 031 BEQ 2$ ;YES
015 PRM11 013 011 PRM11 011 015 CMPB #BELL,R1 ;WAS CHAR BELL ?
016 CONS11 002 031 BEQ 2$ ;YES
017 PRM11 013 035 PRM11 011 015 CMPB #NULL,R1 ;WAS CHAR NULL ?
018 CONS11 002 031 BEQ 2$ ;YES
019 006 038 3$: BR $$PNTX ;NO, RETURN
020
021 2$: TST PCMDNF ;DOING NO PRINT PROGRAM COMMAND
022 CONS11 005 001 BNE 3$
023
024 .LIF DF LPTASB
025 PRM11 004 034 PLPT ;LINE PRINTER
026
027 PRM11 004 032 PRINTT ;PRINT BUFFER
028 CLR $TTLKF ;CLEAR TTLOOK FLAG
029 PRM11 011 014 PUSH R0
030 PRM11 004 039 PNTRST ;RESET OUTPUT POINTERS
031 PRM11 011 014 POP R0
032 CONS11 005 001 BR 3$
033
034 ;PRINT, BACKUP OUTPUT INSERTION POINTER
035
036 $PNTBAK:CMP $OUTPT,#$OUTBF ;ALL THE WAY BACK ?
037 CONS11 002 007 BLE 1$ ;YES
038 DEC $OUTPT ;NO, BACKUP ONE BYTE
039 006 038 1$: BR $$PNTX
040
041 ;TELETYPE POINTER INITIALIZATION
042
043 $TTPINI:MOV #$INBUF,$INPTC
044 MOV #$INBUF,$INPTR
045
046 PRM11 011 014 $PNTRST:MOV #$OUTBF,R0
047 PRM11 011 014 MOV R0,$OUTPT
048 PRM11 011 014 MOV R0,$OUTPP
049 006 038 BR $$PNTX
␈↓& TELETYPE PRINT OUTPUT ROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 8␈↓'α
001 .SBTTL TELETYPE PRINT OUTPUT ROUTINE
002
003 PRM11 011 014 $PRINT: PUSH R0
004 TST $FORCE ;FORCED PRINT OUT
005 008 018 BNE 19$ ;YES BYPASS SWITCH TEST
006
007 TSTB LPTFLG ;PRINT ON LPT ?
008 008 014 BNE 99$ ;BR IF YES
009
010 PRM11 005 011 SWITCH
011 PRM11 011 014 PRM11 002 009 BIT R0,#NOPNT ;PRINTOUT INHIBITED
012 CONS11 002 007 BEQ 1$
013
014 99$: MOV $OUTPT,$OUTPP ;DONE, SET PRINTED TO POSITION
015 PRM11 011 014 POP R0
016 006 038 BR $$PNTX ;RETURN
017
018 19$: CLR CTRLOF ;CLEAR CONTROL O FLAG
019 PRM11 011 015 1$: MOV $OUTPP,R1
020
021 PRM11 013 010 PRM11 011 015 11$: CMPB #CR,(R1) ;IS CHAR CR?
022 CONS11 002 031 BEQ 2$ ;BR IF YES
023 CMP $PRNTH,$PGWID ;NO,ARE WE AT RIGHT MARGIN
024 CONS11 005 001 BLT 3$ ;BR IF NO
025 PRM11 013 010 PRM11 011 014 MOVB #CR,R0 ;YES, FREE CR/LF
026 PRM11 004 033 PTTY
027 PRM11 013 007 PRM11 011 014 MOVB #LF,R0
028 PRM11 004 033 PTTY
029
030 2$: INC $TPLIT ;COUNT LINE
031
032 PRM11 011 015 PRM11 011 014 3$: MOVB (R1),R0 ;GET CHARACTER
033 008 014 BEQ 99$ ;IF NULL, DONE
034 PRM11 004 033 PTTY ;PRINT CHAR
035 PRM11 011 015 TSTB (R1)+ ;LOOP TILL E-O-L
036 CONS11 003 018 BNE 11$
037 PRM11 011 022 CONS11 046 058 4$: JSR PC,C10COP
038 PRM11 011 022 025 038 JSR PC,$TORDY ;THEN WAIT FOR TTY TO BE READY
039 CONS11 004 051 BCS 4$
040 008 014 BR 99$
␈↓& TELETYPE DRIVER SUB11.PAL[KL,SYS] 10/05/77 Page 9␈↓'α
001 .SBTTL TELETYPE DRIVER
002
003 PRM11 011 016 $PTTY: CLR R2
004 PRM11 011 017 CLR R3
005 PRM11 011 022 012 003 1$: JSR PC,$PTTYC ;DO OPERATOR CHECKS
006 PRM11 011 017 TST R3 ;R3 = 0 IF NOTHING
007 CONS11 004 051 BEQ 4$
008 PRM11 013 019 PRM11 011 017 2$: CMPB #XON,R3
009 CONS11 034 069 BEQ 6$ ;XON,PRINT
010 PRM11 013 018 PRM11 011 017 CMPB #XOFF,R3
011 CONS11 004 051 BNE 4$
012 PRM11 011 016 3$: MOV #-1,R2 ;XOFF,STOP PRINT
013 PRM11 011 016 4$: TST R2
014 CONS11 002 007 BNE 1$ ;IF XOFF, WAIT FOR XON
015 6$: TST CTRLOF ;CONTROL O'D ?
016 CONS11 035 053 BNE 7$ ;YES
017 PRM11 013 010 PRM11 011 014 CMPB #CR,R0 ;CR
018 CONS11 035 053 BNE 7$
019 TST $TPLIN ;YES, IN PAGE MODE
020 CONS11 035 053 BEQ 7$ ;NO
021 CMP $TPLIT,$TPLIN ;FILLED THIS PAGE
022 CONS11 035 053 BLT 7$
023 CLR $TPLIT ;YES,CLEAR COUNTER,XOFF
024 CONS11 005 001 BR 3$
025
026 PRM11 011 016 7$: CLR R2
027 PRM11 013 006 PRM11 011 014 CMPB #CNTRLI,R0 ;IS CHAR A TAB?
028 CONS11 030 016 BNE 10$
029 PRM11 011 022 010 034 8$: JSR PC,$PTTY1 ;COMPUTE SPACES COUNT
030 PRM11 011 016 9$: INC R2 ;COMPLETED "TAB"?
031 PRM11 013 012 PRM11 011 014 MOVB #BLANK,R0
032
033 PRM11 011 022 CONS11 046 058 10$: JSR PC,C10COP ;PERFORM CLOCK OPERATIONS
034 TST CTRLOF
035 CONS11 003 018 BNE 11$
036 PRM11 011 022 025 038 JSR PC,$TORDY ;WAIT TILL TTY IS READY
037 CONS11 030 016 BCS 10$
038 PRM11 011 014 MOVB R0,$TOCHR ;PRINT CHAR
039 PRM11 011 022 025 063 JSR PC,$TOOUT
040 PRM11 011 022 010 039 19$: JSR PC,$PTTY2 ;WILL CHAR MOVE PRINT HEAD ?
041
042 PRM11 011 016 11$: TST R2 ;DOING SPACES?
043 CONS11 019 049 BNE 9$ ;BR IF YES
␈↓& TELETYPE DRIVER SUB11.PAL[KL,SYS] 10/05/77 Page 10␈↓'α
001 TST CTRLOF
002 CONS11 030 036 BNE 15$
003 SBST11 002 017 PRM11 011 016 MOV #$DTBL0,R2 ;FILLER PROCESS
004 PRM11 011 016 12$: TSTB (R2)
005 CONS11 030 036 BEQ 15$ ;BR IF CHAR DOESN'T REQUIRE FILLS
006 PRM11 011 016 PRM11 011 014 CMPB (R2)+,R0
007 CONS11 030 024 BNE 12$
008 PRM11 011 016 DEC R2 ;FOUND
009 SBST11 002 017 PRM11 011 016 SUB #$DTBL0,R2
010 PRM11 011 016 ASL R2
011 SBST11 002 024 PRM11 011 016 MOV $DTBL1(R2),R2 ;ADDRESS TO R2
012 PRM11 011 016 ADD $TTYFL,R2 ;ADD FILL PARAMETER
013 PRM11 011 016 PRM11 011 016 MOVB (R2),R2 ;R2 = NUMBER OF FILLS
014 PRM11 011 014 PRM11 013 010 CMPB R0,#CR ;CR?
015 CONS11 030 028 BNE 13$ ;NO
016 CMP $PRNTH,#15. ;MORE THEN 15 CHARS ON LINE ?
017 010 019 BGT 16$
018 PRM11 011 016 SR R2,1 ;NO, 1/4 TH OF FILLERS THEN
019 16$: CMP $PRNTH,#40. ;MORE THAN 40 CHARS ON LINE ?
020 010 022 BGT 17$
021 PRM11 011 016 SR R2,1 ;NO, 1/2 OF FILLERS THEN
022 17$: CLR $PRNTH ;SET PRINT HEAD TO LEFT MARGIN
023
024 PRM11 011 016 13$: DEC R2 ;COMPLETED FILLERS?
025 CONS11 030 036 BLT 15$
026 PRM11 011 022 CONS11 046 058 14$: JSR PC,C10COP ;PERFORM CLOCK OPERATIONS
027 PRM11 011 022 025 038 JSR PC,$TORDY
028 CONS11 030 032 BCS 14$
029 PRM11 013 035 MOVB #NULL,$TOCHR ;SEND FILLER
030 PRM11 011 022 025 063 JSR PC,$TOOUT
031 CONS11 030 028 BR 13$
032 PRM11 008 043 15$: EXIT ;RETURN
033
034 PRM11 011 016 $PTTY1: MOV $PRNTH,R2 ;HEAD POSITION
035 PRM11 011 016 1$: SUB #8.,R2 ;DIVIDED BY 8
036 CONS11 002 007 BGE 1$ ;REMAINDER IS SPACES COUNT
037 PRM11 011 022 RTS PC
038
039 PRM11 011 014 PRM11 013 012 $PTTY2: CMPB R0,#BLANK ;WILL CHAR MOVE PRINT HEAD?
040 CONS11 002 007 BLT 1$ ;BR IF NO
041 INC $PRNTH ;YES
042 PRM11 011 022 1$: RTS PC
␈↓& LINE PRINTER DRIVER SUB11.PAL[KL,SYS] 10/05/77 Page 11␈↓'α
001 .SBTTL LINE PRINTER DRIVER
002
003 .IF DF LPASB
004
005 PRM11 009 003 $PLPT: PUSH R0
006 TST LPTFLG ;PRINT ON LPT ?
007 008 014 BPL 99$ ;NO
008 TSTB LPTFLG
009 008 014 BEQ 99$
010 TST $FORCE ;FORCED PRINT ?
011 CONS11 002 007 BNE 1$ ;YES, BYPASS SWITCH TEST
012 PRM11 005 011 SWITCH
013 PRM11 011 014 PRM11 002 009 BIT R0,#NOPNT ;PRINTOUT INHIBITED ?
014 CONS11 002 007 BEQ 1$ ;NO
015 PRM11 009 011 99$: POP R0
016 PRM11 008 043 EXIT ;RETURN
017
018 1$: TST LPTYPE ;LP20 OR LP11 ?
019 011 055 BNE 50$ ;LP20
020 BEG11 002 018 TST @$LPS ;IS LPT OK ?
021 CONS11 004 051 BMI 4$ ;BR IF ERROR
022 PRM11 011 015 MOV #$OUTBF,R1
023 PRM11 011 015 PRM11 011 014 2$: MOVB (R1)+,R0 ;GET CHAR
024 008 014 BEQ 99$ ;NULL, DONE
025 PRM11 011 016 3$: CLR R2
026 PRM11 013 006 PRM11 011 014 CMPB #CNTRLI,R0 ;TAB ?
027 011 031 BNE 41$
028 PRM11 011 022 010 034 JSR PC,$PTTY1 ;YES, COMPUTE SPACES COUNT
029 PRM11 011 016 42$: INC R2
030 PRM11 013 012 PRM11 011 014 MOV #BLANK,R0
031 PRM11 011 022 012 003 41$: JSR PC,$PTTYC ;DO OPERATOR CHECKS
032 BEG11 002 018 32$: TST @$LPS ;LPT OK ?
033 CONS11 004 051 BMI 4$ ;NO
034 PRM11 011 022 CONS11 046 058 JSR PC,C10COP ;PERFORM CLOCK OPERATIONS
035 BEG11 002 018 TSTB @$LPS ;LPT READY ?
036 011 031 BPL 41$ ;NO
037 PRM11 011 014 BEG11 002 019 MOVB R0,@$LPB ;PRINT CHARACTER
038 PRM11 011 022 010 039 JSR PC,$PTTY2 ;WILL CHAR MOVE PRINT HEAD ?
039 PRM11 011 016 45$: TST R2 ;COMPLETED "TAB" ?
040 011 029 BNE 42$
041 PRM11 011 014 PRM11 013 010 43$: CMPB R0,#CR
042 011 044 BNE 44$
043 CLR $PRNTH ;IF CR, RESET HEAD POSITION
044 CONS11 002 031 44$: BR 2$
045
046 011 079 PRM11 011 015 4$: MOV #$LPTOF,R1 ;"LPT OFF LINE"
047 PRM11 011 015 PRM11 011 014 5$: MOVB (R1),R0
048 PRM11 004 033 PTTY
049 PRM11 011 015 TSTB (R1)+
050 CONS11 034 069 BEQ 6$
051 CONS11 024 048 BR 5$
052 6$: CLRB LPTFLG ;PRINT ON TTY TILL RESELECTED
053 008 014 BR 99$
054
055 PRM11 011 019 50$: MOV LPTYPE,R5 ;LP20 DRIVER ROUTINE
056 PRM11 042 016 PRM11 011 019 MOV #LPLINI!LPRERR,(R5) ;CLEAR LP20
057 PRM11 042 044 DEC LPPCTR(R5) ;CLEAR PAGE COUNTER
058 PRM11 011 014 MOV #$OUTBF,R0 ;GET BUFFER ADDRESS
059 PRM11 011 014 PRM11 042 040 MOV R0,LPBSAD(R5) ;SETUP LP20 BUFFER ADDRESS
060 PRM11 011 014 SUB $OUTPT,R0 ;COMPUTE BYTE COUNT
061 PRM11 011 014 PRM11 042 042 MOV R0,LPBCTR(R5) ;SETUP LP20 BYTE COUNT
062 PRM11 042 024 PRM11 011 019 MOV #LPPENB!LPGO,(R5) ;START XFER
063 PRM11 011 022 011 067 JSR PC,LP20DN ;WAIT FOR DONE
064 CONS11 004 051 BCS 4$ ;ERROR
065 008 014 BR 99$ ;DONE
066
067 PRM11 011 022 CONS11 046 058 LP20DN: JSR PC,C10COP ;PERFORM CLOCK OPERATIONS
068 PRM11 042 017 PRM11 011 019 BIT #LPERR!LPPZRO!LPUCHR!LPDONE,(R5)
069 011 067 BEQ LP20DN ;WAIT FOR DONE OR ERROR
070
071 PRM11 011 019 TSTB (R5) ;DONE ?
072 CONS11 002 007 BPL 1$ ;NO, ERROR
073 CLC
074 PRM11 011 022 RTS PC ;DONE, C-BIT CLEAR RETURN
075
076 1$: SEC
077 PRM11 011 022 RTS PC ;ERROR, C-BIT SET RETURN
␈↓& LINE PRINTER DRIVER SUB11.PAL[KL,SYS] 10/05/77 Page 11.1␈↓'α
078
079 $LPTOF: .ASCIZ /LPT OFF
080 /
081 .EVEN
082
083 .ENDC ;.IF DF LPASB
␈↓& LINE PRINTER DRIVER SUB11.PAL[KL,SYS] 10/05/77 Page 12␈↓'α
001 ;OPERATOR INTERRUPT TYPEIN CHECKS
002
003 PRM11 011 017 $PTTYC: CLR R3
004 TST $TTLKF ;INPUT CHECKS INHIBITED ?
005 CONS11 024 048 BNE 5$ ;YES
006 PRM11 011 022 025 003 JSR PC,$TIRDY ;ANY OPERATOR ACTION ?
007 CONS11 024 048 BCS 5$ ;NO
008 PRM11 011 017 MOVB $TICHR,R3
009 PRM11 011 017 BICB #200,R3
010 PRM11 011 017 MOV R3,$TNCHR
011 PRM11 006 030 TENCHR ;SEND CHAR TO TEN
012 PRM11 013 023 PRM11 011 017 CMPB #CNTRLC,R3 ;CONTROL C ?
013 CONS11 005 001 BNE 3$
014 PRM11 003 036 TTPINI ;FLUSH REST OF OUTPUT
015 TST PCMDFLG ;DOING PROGRAM COMMAND ?
016 CONS11 002 031 BNE 2$ ;YES
017 023 025 JMP $TICC ;CONTROL C, RETURN TO CONSOLE
018
019 CONS11 010 031 2$: JMP PCMDE2 ;PROGRAM COMMAND, RETURN TO CALLER
020
021 PRM11 013 020 PRM11 011 017 3$: CMPB #CNTRLO,R3
022 CONS11 002 007 BNE 1$
023 COM CTRLOF ;CONTROL O, STOP OUTPUT
024 012 044 PRM11 011 017 MOV #$PTCO,R3
025 PRM11 011 022 CONS11 046 058 10$: JSR PC,C10COP
026 PRM11 011 022 025 038 JSR PC,$TORDY
027 CONS11 030 016 BCS 10$
028 PRM11 011 017 MOVB (R3)+,$TOCHR
029 012 032 BNE 90$
030 PRM11 011 017 CLR R3
031 CONS11 024 048 BR 5$
032 PRM11 011 022 025 063 90$: JSR PC,$TOOUT
033 CONS11 030 016 BR 10$
034 PRM11 013 026 PRM11 011 017 1$: CMPB #CNTRLL,R3 ;CONTROL L, CHANGE LPT SELECTION
035 CONS11 004 051 BNE 4$
036 TST LPTFLG
037 CONS11 004 051 BPL 4$
038 COMB LPTFLG ;ONLY IF SELECTED
039 PRM11 013 029 PRM11 011 017 4$: CMPB #CNTRLX,R3 ;CONTROL X, CONSOLE COMMAND
040 CONS11 024 048 BNE 5$
041 023 043 JMP $TICX ;DO "TTILIN" & GO TO "$RPT"
042 PRM11 011 022 5$: RTS PC
043
044 $PTCO: .ASCIZ /↑O
045 /
046 .EVEN
␈↓& PRINT PDP-10 ADDRESS SUB11.PAL[KL,SYS] 10/05/77 Page 13␈↓'α
001 .SBTTL PRINT CRLF
002
003 PRM11 008 006 $PCRLF: PMSG <\>
004 014 046 BR $$PEX
005
006 .SBTTL RING TTY BELL
007
008 PRM11 013 011 PRM11 011 014 $PBELL: MOVB #BELL,R0
009 PRM11 004 033 PTTY ;DING THE BELL DIRECTLY
010 014 046 BR $$PEX
011
012 .SBTTL PRINT SPECIFIED OCTAL DIGITS
013
014 PRM11 011 015 $PODT: MOV @$EMADR,R1 ;TRAILING PARAMETER
015 PRM11 011 021 ADD #2,12(SP)
016
017 PRM11 011 015 PRM11 011 016 $PNTODC:MOV R1,R2 ;SETUP DIGIT COUNT
018 CONS11 002 007 BGT 1$
019 PRM11 003 004 FATAL
020 PRM11 011 015 1$: CMP R1,#6
021 CONS11 002 031 BLE 2$
022 PRM11 003 004 FATAL
023 PRM11 011 015 2$: MOV #$TTSAV+2,R1
024 PRM11 011 015 CLR (R1) ;SETUP OCTAL NUMBER
025 PRM11 011 014 PRM11 011 015 MOV R0,-(R1)
026 PRM11 011 022 015 031 JSR PC,$PODMV ;SETUP PARAMETERS
027 CLR $0FLG ;NO SPACE FOLLOWING NUMBER
028 013 032 PRM11 011 017 MOVB $PODCD-1(R2),R3 ;GET PRESET SHIFT COUNT
029 PRM11 005 007 PROL36 ;PRESET NUMBER
030 014 030 BR $P23X ;GO PRINT NUMBER
031
032 $PODCD: .BYTE 33.,30.,27.,24.,21.,18.
033
034 .SBTTL PRINT PDP-10 ADDRESS
035
036 ;PRINTS 23 BIT FORMAT IF ANY OF 13-17 ADDRESS BITS ARE SET.
037 ;OTHERWISE PRINTS 18 BIT FORMAT.
038
039 PRM11 011 022 013 046 $PADR: JSR PC,$$P23
040 PRM11 011 015 BIT #174,4(R1) ;ANY OF 13-17 SET ?
041 014 013 BNE $P23Y ;YES
042 PRM11 011 017 MOV #6,R3
043 PRM11 005 007 PROL36 ;NO, DUMP HI-ORDER BITS
044 014 027 BR $P18X ;PRINT 18 BITS
045
046 PRM11 011 022 015 025 $$P23: JSR PC,$P36MV
047 PRM11 011 017 MOV #12.,R3
048 PRM11 005 007 PROL36 ;POSITION 23 BITS
049 PRM11 011 015 BIC #177600,4(R1) ;CLEAR UPPER JUNK BITS
050 PRM11 011 022 RTS PC
␈↓& PRINT 36 BIT NUMBER SUB11.PAL[KL,SYS] 10/05/77 Page 14␈↓'α
001 .SBTTL PRINT LOWER 18 BITS OF 36 BIT NUMBER
002
003 PRM11 011 022 015 025 $PNT18: JSR PC,$P36MV
004
005 PRM11 011 017 MOV #18.,R3
006 PRM11 005 007 PROL36 ;SHIFT LOWER 18 BITS TO UPPER
007 014 027 BR $P18X
008
009 .SBTTL PRINT LOWER 23 BITS OF 36 BIT NUMBER
010
011 PRM11 011 022 013 046 $PNT23: JSR PC,$$P23
012
013 PRM11 011 016 $P23Y: MOV #2,R2
014 PRM11 011 018 INC R4
015 014 030 BR $P23X
016
017 .SBTTL PRINT 36 BIT NUMBER IN BINARY
018
019 PRM11 011 022 015 025 $P36B: JSR PC,$P36MV
020 PRM11 011 019 COM R5
021 014 026 BR $P36BX
022
023 .SBTTL PRINT 36 BIT NUMBER
024
025 PRM11 011 022 015 025 $PNT36: JSR PC,$P36MV
026 PRM11 011 018 $P36BX: INC R4
027 $P18X=.
028
029 PRM11 011 016 2$: MOV #6,R2
030 $P23X=.
031 PRM11 011 017 1$: MOV #3,R3
032
033 PRM11 005 007 PROL36 ;ROTATE 3
034 PRM11 011 022 015 001 JSR PC,$PRT36 ;PRINT OCTAL
035
036 PRM11 011 016 DEC R2 ;FINISHED HALF WORD YET ?
037 CONS11 002 007 BNE 1$
038
039 TST $0FLG
040 CONS11 005 001 BEQ 3$
041 PRM11 004 013 PSPACE
042
043 PRM11 011 018 3$: DEC R4 ;FINISHED FULL WORD YET ?
044 CONS11 002 031 BPL 2$
045
046 PRM11 008 043 $$PEX: EXIT
␈↓& PRINT 36 BIT NUMBER SUB11.PAL[KL,SYS] 10/05/77 Page 15␈↓'α
001 PRM11 011 015 PRM11 011 014 $PRT36: MOV 4(R1),R0 ;GET THE WORD
002 PRM11 011 014 SWAB R0
003 PRM11 011 019 TST R5
004 CONS11 002 007 BNE 1$
005 PRM11 004 011 PNTNBR ;PRINT OCTAL
006 PRM11 011 022 RTS PC
007
008 PRM11 011 018 1$: PUSH R4
009 PRM11 011 014 PRM11 011 018 MOV R0,R4
010 PRM11 011 017 MOV #177776,R3
011 PRM11 011 014 SR R0,2
012 PRM11 011 017 PRM11 011 014 BIC R3,R0
013 PRM11 004 011 PNTNBR ;PRINT HI-BIT OF OCTAL
014 PRM11 011 018 PRM11 011 014 MOV R4,R0
015 PRM11 011 014 SR R0,1
016 PRM11 011 017 PRM11 011 014 BIC R3,R0
017 PRM11 004 011 PNTNBR ;PRINT MIDDLE-BIT OF OCTAL
018 PRM11 011 018 PRM11 011 014 MOV R4,R0
019 PRM11 011 017 PRM11 011 014 BIC R3,R0
020 PRM11 004 011 PNTNBR ;PRINT LO-BIT OF OCTAL
021 PRM11 004 013 PSPACE
022 PRM11 011 018 POP R4
023 PRM11 011 022 RTS PC
024
025 PRM11 011 017 $P36MV: MOV #6,R3 ;MOVE 6 BYTES
026 PRM11 011 016 MOV #$TTSAV,R2 ;TO SETUP DATA
027 PRM11 011 016 PRM11 011 015 MOV R2,R1
028 PRM11 011 014 PRM11 011 016 1$: MOVB (R0)+,(R2)+
029 PRM11 011 017 DEC R3
030 CONS11 002 007 BNE 1$
031 PRM11 011 019 $PODMV: CLR R5
032 PRM11 011 018 CLR R4
033 PRM11 011 017 MOV #4,R3
034 PRM11 011 017 MOV R3,$0FLG ;SET SPACE FLAG
035 PRM11 005 007 PROL36 ;PRESET NUMBER
036 PRM11 011 022 RTS PC
037
038 PRM11 011 015 $PROL36:ROL (R1)
039 PRM11 011 015 ROL 2(R1)
040 PRM11 011 015 ROL 4(R1)
041 PRM11 011 017 DEC R3
042 015 038 BNE $PROL36
043 014 046 BR $$PEX
␈↓& PRINT OCTAL ZERO SUPRRESS SUB11.PAL[KL,SYS] 10/05/77 Page 16␈↓'α
001 .SBTTL PRINT OCTAL
002
003 PRM11 011 018 $PNTOCT:MOV #-1,R4 ;PRINT OCTAL
004 016 009 BR $PNTO
005
006 .SBTTL PRINT OCTAL ZERO SUPRRESS
007
008 PRM11 011 018 $PNTOSC:CLR R4 ;PRINT OCTAL ZERO SUPPRESS
009 PRM11 011 015 $PNTO: MOV #6,R1 ;SET FOR 6 DIGITS
010 PRM11 011 014 PRM11 011 016 MOV R0,R2 ;SAVE INPUT NUMBERS
011 PRM11 011 019 CLR R5 ;CLEAR THE ZERO FILL FLAG
012 PRM11 011 018 TST R4 ;ZERO SUPPRESS ?
013 CONS11 030 016 BNE 10$ ;NO
014 PRM11 011 014 TST R0 ;TEST FOR A ZERO INPUT NUMBER
015 CONS11 002 007 BNE 1$
016 PRM11 011 015 CLR R1 ;INPUT = 0 PRINT AND EXIT
017 CONS11 024 048 BR 5$
018
019 PRM11 011 019 10$: INC R5
020 PRM11 011 014 1$: CLR R0
021 PRM11 011 016 ROL R2 ;MSD TO C BIT
022 CONS11 005 001 BR 3$
023
024 PRM11 011 016 2$: ROL R2
025 PRM11 011 016 ROL R2
026 PRM11 011 016 ROL R2
027 PRM11 011 016 PRM11 011 014 MOV R2,R0
028 PRM11 011 014 3$: ROL R0
029
030 PRM11 011 014 BIC #177770,R0 ;GET RID OF JUNK
031 CONS11 004 051 BEQ 4$
032 PRM11 011 019 INC R5 ;SET ZERO FILL FLAG
033
034 PRM11 011 019 4$: TST R5 ;SUPPRESS ?
035 CONS11 034 069 BEQ 6$
036 PRM11 004 011 5$: PNTNBR ;PRINT DIGIT
037 PRM11 011 015 6$: DEC R1
038 CONS11 002 031 BGT 2$
039
040 PRM11 011 018 TST R4
041 CONS11 035 053 BEQ 7$
042 PRM11 004 013 PSPACE ;SPACE UNLESS OCTAL SUPPRESS
043 017 038 7$: BR $$PEX1
␈↓& CONVERT BINARY TO DECIMAL AND TYPE ROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 17␈↓'α
001 .SBTTL CONVERT BINARY TO DECIMAL AND TYPE ROUTINE
002
003 PRM11 011 015 $PNTDEC:MOV #5,R1 ;SET FOR 5 DIGIT
004 PRM11 011 014 PRM11 011 016 MOV R0,R2 ;SAVE INPUT NUMBER
005 PRM11 011 019 CLR R5 ;CLEAR ZERO FILL FLAG
006 PRM11 011 014 TST R0 ;TEST SIGN OF INPUT NUMBER
007 CONS11 002 007 BPL 1$ ;POSITIVE GO TYPE IT
008 PRM11 011 014 MOVB #'-,R0 ;PRINT A MINUS SIGN
009 PRM11 004 009 PNTCHR ;SEND TO BUFFER
010 PRM11 011 016 NEG R2 ;NEGATE THE NUMBER
011 PRM11 011 016 PRM11 011 014 MOV R2,R0 ;GET NUMBER AGAIN
012 PRM11 011 014 BIC #100000,R0 ;CLEAR SIGN BIT
013 PRM11 011 014 1$: TST R0 ;TEST FOR A ZERO INPUT NUMBER
014 CONS11 002 031 BNE 2$ ;NON ZERO
015 PRM11 004 011 PNTNBR ;PRINT A SINGLE ZERO AND EXIT
016 CONS11 019 049 BR 9$ ;EXIT
017 PRM11 011 017 2$: CLR R3 ;ZERO THE CONSTANTS INDEX
018 PRM11 011 014 3$: CLR R0 ;CLEAR THE BCD NUMBER
019 SBST11 002 040 PRM11 011 016 4$: SUB $DTBL(R3),R2 ;FORM THIS BCD DIGIT
020 CONS11 024 048 BLT 5$ ;BR IF DONE
021 PRM11 011 014 INC R0 ;INCREASE THE BCD DIGIT BY 1
022 CONS11 004 051 BR 4$
023 SBST11 002 040 PRM11 011 016 5$: ADD $DTBL(R3),R2 ;ADD BACK THE CONSTANT
024 PRM11 011 014 TST R0 ;TEST IF DIGIT IS A ZERO
025 CONS11 034 069 BEQ 6$ ;YES
026 PRM11 011 019 INC R5 ;NO SET ZERO FILL FLAG
027 CONS11 035 053 BR 7$
028
029 PRM11 011 019 6$: TST R5 ;IS ZERO FILL FLAG SET
030 CONS11 035 063 BEQ 8$ ;YES EXIT
031 PRM11 011 014 7$: BIS #'0,R0 ;MAKE THE BCD DIGIT ASCII
032 PRM11 004 009 PNTCHR
033 PRM11 011 017 8$: TST (R3)+ ;JUST INCREMENTING
034 PRM11 011 015 DEC R1 ;DONE YET
035 CONS11 005 001 BGT 3$ ;GO DO THE NEXT DIGIT
036 PRM11 004 010 9$: PNTCI
037 '. ;PRINT DECIMAL POINT
038 PRM11 008 043 $$PEX1: EXIT ;RETURN TO USER
␈↓& TTY ALT-MODE CHECK ROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 18␈↓'α
001 .SBTTL TTY INPUT ROUTINE TTICHR
002
003 PRM11 011 014 $TTICHR:CLR R0
004 CMP $INPTC,$INPTR ;ARE WE AT END ON CURRENT BUFFER
005 018 011 BGT $TTIX2 ;YES EXIT
006 PRM11 011 014 MOVB @$INPTC,R0 ;FETCH CHARACTER FROM BUFFER
007 INC $INPTC
008
009 PRM11 011 014 $TTIX1: BIC #177600,R0
010 018 044 BR $$PSX2 ;OK RETURN
011 018 042 $TTIX2: BR $$PEX2 ;ERROR RETURN
012
013 .SBTTL TTY LOOK
014
015 ;*TELETYPE KEYBOARD CHECK ROUTINE
016 ;*CHECKS FOR ANY KEY STRUCK,RETURNS IMMEDIATELY
017 ;*RETURNS WITH C-BIT SET IF NO TYPEIN
018
019 $TTLOOK:INC $TTLKF ;SET INHIBIT INPUT CHECKS
020 PRM11 011 014 CLR R0
021 PRM11 011 022 025 003 JSR PC,$TIRDY ;ANYTHING BEEN TYPED
022 018 011 BCS $TTIX2 ;NO, C-BIT RETURN
023 PRM11 011 014 MOVB $TICHR,R0 ;YES, PUT IT IN R0
024 CLR $TTLKF ;CLEAR INHIBIT INPUT CHECKS
025 018 009 BR $TTIX1 ;RETURN
026
027 .SBTTL TTY ALT-MODE CHECK ROUTINE
028
029 ;*CHECK FOR ALT-MODE IF NOTHING TYPED OR NOT ALTMODE C-BIT SET
030 ;*IF ALT-MODE WAS TYPED THEN C-BIT CLEAR
031
032 PRM11 003 020 $TTALTM:TTLOOK ;ANYTHING TYPED
033 CONS11 002 031 BCS 2$ ;NO
034
035 PRM11 011 014 CMPB R0,#175
036 CONS11 005 001 BEQ 3$
037 PRM11 011 014 CMPB R0,#176
038 CONS11 005 001 BEQ 3$
039 PRM11 011 014 PRM11 013 032 CMPB R0,#ALTMOD
040 CONS11 002 007 BEQ 1$
041
042 $$PEX2=.
043 PRM11 008 051 2$: EXITERR ;EXIT
044 $$PSX2=.
045 PRM11 008 043 1$: EXIT ;OK RETURN
046
047 PRM11 013 032 PRM11 011 014 3$: MOVB #ALTMOD,R0
048 CONS11 002 007 BR 1$
␈↓& BACKUP TTY INPUT BUFFER POINTER SUB11.PAL[KL,SYS] 10/05/77 Page 19␈↓'α
001 .SBTTL TTIYES YES OR NO ROUTINE
002
003 ; NO BITS SET IF YES
004 ; N-BIT SET IF NO
005 ; C-BIT SET IF NEITHER
006
007 PRM11 003 018 $TTIYES:TTICHR ;GET INPUT CHARACTER
008 018 042 BCS $$PEX2 ;NO CHAR AVAILABLE
009 PRM11 011 014 CMPB #'Y,R0 ;WAS THE CHAR A "Y" ?
010 018 044 BEQ $$PSX2 ;BR IF YES
011 PRM11 011 014 CMPB #'N,R0 ;WAS THE CHAR AN "N" ?
012 018 042 BNE $$PEX2 ;BR IF NO, NEITHER
013 PRM11 011 007 PRM11 011 021 BIS #NBIT,14(SP) ;"NO", SET N-BIT
014 018 044 BR $$PSX2
015
016 .SBTTL PRINT A SELECTED NUMBER OF SPACES
017
018 PRM11 011 015 $PNTSPC:DEC R1
019 CONS11 002 007 BLT 1$
020
021 PRM11 004 013 PSPACE ;PRINT SPACE
022 019 018 BR $PNTSPC
023
024 PRM11 011 022 1$: RTS PC
025
026 .SBTTL BACKUP TTY INPUT BUFFER POINTER
027
028 $TTBACK:CMP $INPTC,#$INBUF
029 018 042 BLE $$PEX2 ;CAN'T, C-BIT SET RETURN
030 DEC $INPTC ;BACKUP POINTER
031 018 044 BR $$PSX2
␈↓& CLEAR FORCE PRINT FLAG SUB11.PAL[KL,SYS] 10/05/77 Page 20␈↓'α
001 .SBTTL READ SWITCH REGISTER
002
003 PRM11 011 045 PRM11 011 014 $SWITCH:MOV SWR,R0 ;PUT SWR INTO R0
004
005 PRM11 011 014 1$: MOV R0,$SWTCH ;SAVE A COPY FOR FUTURE REFERENCE
006 020 023 BR $$PEX3 ;RETURN TO USER
007
008 .SBTTL RETURN WITH COPY OF SWITCHES
009
010 PRM11 011 014 $SWTSAM:MOV $SWTCH,R0 ;COPY OF SWITCHES TO RO
011 020 023 BR $$PEX3
012
013 .SBTTL SET FORCE PRINT FLAG
014
015 PRM11 005 008 $PFORCE:SETFLG
016 $FORCE ;177777 TO FORCE FLAG
017 020 023 BR $$PEX3 ;RETURN
018
019
020 .SBTTL CLEAR FORCE PRINT FLAG
021
022 $PNORML:CLR $FORCE ;0 TO FORCE FLAG
023 PRM11 008 043 $$PEX3: EXIT ;RETURN
024
025 ;TTILIN ENTRY POINT FROM RUNLP
026
027 $TILRN: CLR TILNWF ;CLEAR TTY WAIT FLAG
028 PRM11 011 022 020 033 JSR PC,$TILN3 ;INIT TTILIN ROUTINE
029 PRM11 009 003 PUSH $FORCE
030 PRM11 011 015 MOV #$INBUF,R1
031 021 022 BR $TILN2 ;GO INPUT, 1ST CHAR ALREADY AVAILABLE
032
033 $TILN3: CLR CTRLOF ;CLEAR CONTROL O FLAG
034 CMP #$OUTBF,$OUTPT ;ANY OUTPUT WAITING ?
035 CONS11 002 007 BEQ 1$ ;NO
036 PRM11 004 032 PRINTT ;YES, PRINT IT
037 1$: CLR $TPLIT ;CLEAR LINES ON PAGE
038 CLR $0FLG ;CLEAR RUBOUT FLAG
039 CLR $TTYTIM ;CLEAR TTY TIMEOUT
040 PRM11 011 022 RTS PC
␈↓& INPUT A STRING FROM TTY SUB11.PAL[KL,SYS] 10/05/77 Page 21␈↓'α
001 .SBTTL INPUT A STRING FROM TTY
002
003 PRM11 005 008 $TTILNW:SETFLG ;SET TTY WAIT FLAG
004 TILNWF
005 021 009 BR $TILNX
006
007 $TTILIN:CLR TILNWF ;CLEAR TTY WAIT FLAG
008
009 PRM11 011 022 020 033 $TILNX: JSR PC,$TILN3 ;INIT ROUTINE
010 PRM11 009 003 PUSH $FORCE
011 PRM11 004 026 PFORCE
012 PRM11 011 015 95$: MOV #$INBUF,R1
013 $TILN1=.
014 PRM11 011 022 CONS11 046 058 2$: JSR PC,C10COP ;PERFORM CLOCK OPERATIONS
015 TST TILNWF ;WAIT FOREVER ?
016 CONS11 013 027 BNE 21$ ;YES, NO TIMEOUT
017 CMP $TTYTIM,#<3*60.*60.>;TTY TIMED OUT ?
018 008 014 BGT 99$ ;YES, C-BIT SET EXIT
019
020 PRM11 011 022 025 003 21$: JSR PC,$TIRDY ;TTY IN FLAG SET
021 CONS11 002 031 BCS 2$
022 $TILN2=.
023 CLR $TTYTIM
024 PRM11 011 015 MOVB $TICHR,(R1) ;MOVE CHARACTER TO BUFFER
025 PRM11 011 015 BICB #200,(R1)
026 PRM11 011 015 MOVB (R1),$TNCHR ;SAVE CHAR FOR TEN
027 CONS11 002 031 BEQ 2$ ;NULL, IGNORE
028 PRM11 006 030 TENCHR ;SEND TEN THE CHAR
029
030 PRM11 011 019 CLR R5 ;DO SPECIAL CHAR PROCESS
031 PRM11 011 015 024 003 80$: CMPB (R1),TILINC(R5)
032 021 038 BEQ 81$ ;FOUND
033 PRM11 011 019 INC R5
034 024 003 TSTB TILINC(R5)
035 022 001 BEQ 82$ ;IF 0, END OF LIST
036 021 031 BR 80$
037
038 PRM11 011 019 81$: SL R5,1 ;DISPATCH
039 024 014 JMP @TILINA(R5)
␈↓& INPUT A STRING FROM TTY SUB11.PAL[KL,SYS] 10/05/77 Page 22␈↓'α
001 PRM11 011 015 82$: CMPB (R1),#141
002 022 007 BLT 83$
003 PRM11 011 015 CMPB (R1),#172
004 022 007 BGT 83$
005 PRM11 011 015 BICB #40,(R1) ;CONVERT LOWER TO UPPER CASE
006
007 PRM11 011 015 83$: PUSH R1
008 PRM11 011 015 PRM11 011 015 MOVB (R1),R1 ;PUT CHAR IN R1
009 PRM11 004 035 PLDBUF ;INSERT FOR LPT
010 INC $OUTPP ;MOVE PRINTED-TO-POSITION
011 PRM11 011 015 POP R1
012
013 10$: TST $0FLG ;RUBOUT KEY SET?
014 CONS11 003 018 BEQ 11$ ;BR IF NO
015
016 PRM11 013 016 PRM11 011 014 MOVB #BKSLH,R0 ;TYPE A BACK SLASH
017 PRM11 004 033 PTTY
018 CLR $0FLG ;CLEAR RUBOUT FLAG
019
020 PRM11 011 015 PRM11 011 014 11$: MOVB (R1)+,R0 ;CHAR TO R0
021 PRM11 004 033 PTTY ;PRINT IT
022 CONS11 002 031 BR 2$ ;BACK FOR MORE
023
024 PRM11 011 015 99$: MOV R1,$INPTR ;SAVE INPUT POINTER
025 PRM11 009 011 POP $FORCE
026 PRM11 008 051 EXITERR ;TIMED OUT, C-BIT SET RETURN
027
028 $TIRUB: TST $0FLG ;MULTIPLE RUBOUTS ?
029 CONS11 002 007 BNE 1$ ;YES
030 INC $0FLG ;SET RUBOUT FLAG
031 PRM11 013 016 PRM11 011 014 MOVB #BKSLH,R0 ;TYPE A BACKSLASH
032 PRM11 004 033 PTTY
033
034 PRM11 011 015 1$: DEC R1 ;BACKUP BY ONE
035 PRM11 011 015 CMP R1,#$INBUF-1 ;INPUT BUFFER EMPTY ?
036 CONS11 002 031 BNE 2$ ;NO
037
038 PRM11 004 012 PCRLF ;EMPTY, PRINT CR/LF
039 PRM11 009 011 POP $FORCE
040 021 009 BR $TILNX ;AWAIT NEW LINE
041
042 PRM11 011 015 PRM11 011 014 2$: MOVB (R1),R0 ;PRINT RUBBED OUT CHAR
043 PRM11 004 033 PTTY
044 021 013 BR $TILN1
␈↓& INPUT A STRING FROM TTY SUB11.PAL[KL,SYS] 10/05/77 Page 23␈↓'α
001 ;SPECIAL CHAR PROCESS
002
003 PRM11 008 006 $TICU: PMSG <↑U\> ;CONTROL U, DUMP LINE
004 PRM11 009 011 POP $FORCE
005 021 009 BR $TILNX
006
007 PRM11 011 015 $TICR: INC R1 ;CARRIAGE RETURN
008 PRM11 013 007 PRM11 011 015 MOVB #LF,(R1) ;INSERT LF ALSO
009
010 PRM11 004 012 $TIBELL:PCRLF ;PRINT CR/LF
011
012 PRM11 011 015 $TIEXT: MOV R1,$INPTR ;UPDATE INPUT POINTER
013 MOV #$INBUF,$INPTC ;INIT CHAR POINTER
014 PRM11 009 011 POP $FORCE
015 PRM11 008 043 EXIT ;RETURN
016
017 PRM11 013 032 PRM11 011 015 $TIALT: MOVB #ALTMOD,(R1) ;ALTMODE
018 PRM11 008 006 PMSG <$\> ;PRINT DOLLAR SIGN CR/LF
019 023 012 BR $TIEXT
020
021 PRM11 004 012 $TIBKS: PCRLF ;BACKSLASH, DO LOCAL CR/LF
022 021 013 BR $TILN1
023
024
025 PRM11 004 010 $TICC: PNTCI ;CONTROL C, ABORT
026 "↑C
027 BEG11 002 007 JMP $CNTLC
028
029 $TICL: TST LPTFLG ;CONTROL L, LPT SELECTION
030 021 013 BPL $TILN1
031 COMB LPTFLG
032 021 013 BR $TILN1
033
034 PRM11 011 015 PRM11 011 014 $TILF: MOVB (R1),R0 ;LINE FEED
035 PRM11 004 033 PTTY
036 023 012 BR $TIEXT
037
038 $TICO: CLR CTRLOF ;CLEAR CONTROL O FLAG
039 PRM11 004 010 PNTCI
040 "↑O
041 023 010 BR $TIBELL ;CR/LF & TERMINATE
042
043 PRM11 003 036 $TICX: TTPINI
044 PRM11 004 010 PNTCI
045 "↑X
046 PRM11 003 015 TTILIN ;GET COMMAND LINE
047 023 025 BCS $TICC ;TIMED OUT
048 PRM11 011 021 MOV $KONSP,SP ;RESTORE STACK POINTER
049 CONS11 004 030 JMP $RPT ;GO PROCESS COMMAND
␈↓& INPUT A STRING FROM TTY SUB11.PAL[KL,SYS] 10/05/77 Page 24␈↓'α
001 ;SPECIAL CHARACTERS
002
003 PRM11 013 010 PRM11 013 007 TILINC: .BYTE CR,LF
004 PRM11 013 011 PRM11 013 032 .BYTE BELL,ALTMOD
005 .BYTE 175,176
006 PRM11 013 026 PRM11 013 021 .BYTE CNTRLL,CNTRLU
007 PRM11 013 023 PRM11 013 016 .BYTE CNTRLC,BKSLH
008 PRM11 013 031 PRM11 013 020 .BYTE RUBOUT,CNTRLO
009 PRM11 013 019 PRM11 013 018 .BYTE XON,XOFF
010 PRM11 013 029 .BYTE CNTRLX,0
011
012 ;SPECIAL CHAR DISPATCH TABLE
013
014 023 007 TILINA: $TICR
015 023 034 $TILF
016 023 010 $TIBELL
017 023 017 $TIALT
018 023 017 $TIALT
019 023 017 $TIALT
020 023 029 $TICL
021 023 003 $TICU
022 023 025 $TICC
023 023 021 $TIBKS
024 022 028 $TIRUB
025 023 038 $TICO
026 023 010 $TIBELL
027 023 010 $TIBELL
028 023 043 $TICX
␈↓& CTY & FSTTY DL11 DRIVERS SUB11.PAL[KL,SYS] 10/05/77 Page 25␈↓'α
001 .SBTTL CTY & FSTTY DL11 DRIVERS
002
003 BEG11 002 013 $TIRDY: TSTB @$TKS ;ANY CTY INPUT ?
004 CONS11 002 031 BPL 2$ ;NO
005 BEG11 002 014 BIT #20000,@$TKB ;YES. BREAK?
006 CONS11 024 048 BNE 5$ ;BRANCH IF YES
007 BEG11 002 014 MOVB @$TKB,$TICHR ;GET CHAR
008 BICB #200,$TICHR ;CLEAR PARITY BIT
009 1$: CLC ;C-BIT CLEAR RETURN
010 PRM11 011 022 RTS PC
011
012 PRM11 013 003 5$: MOVB #MSWCHR,$TICHR ;BREAK SEEN.
013 CONS11 002 007 BR 1$
014
015 2$:
016 KLDCP 003 018 .IF NDF TELASB
017 TST DL11EFLG ;DOING DL11E ?
018 CONS11 005 001 BEQ 3$ ;NO
019 PRM11 035 015 BEG11 002 021 BIT #DLCTS,@$FSTKS ;YES, STILL HAVE CLEAR TO SEND ?
020 CONS11 004 051 BEQ 4$ ;NO
021 .IFF
022 TST FSFLG ;DOING DL11E?
023 CONS11 005 001 BEQ 3$ ;NO
024 PRM11 035 015 BEG11 002 021 BIT #DLCTS,@$FSTKS ;STILL HAVE CLEAR TO SEND?
025 CONS11 005 001 BEQ 3$ ;NO
026 .ENDC
027 BEG11 002 021 TSTB @$FSTKS ;ANY FSTTY INPUT ?
028 CONS11 005 001 BPL 3$ ;NO
029 BEG11 002 022 MOVB @$FSTKB,$TICHR ;YES, GET CHAR
030 CONS11 002 007 BR 1$ ;C-BIT CLEAR RETURN
031
032 3$: SEC ;NO INPUT, C-BIT SET RETURN
033 PRM11 011 022 RTS PC
034
035 KLDCP 003 018 .LIF NDF TELASB
036 CONS11 061 030 4$: JMP FSDISC ;DL11E DISCONNECT
037
038 BEG11 002 015 $TORDY: TSTB @$TPS ;IS CTY READY ?
039 CONS11 002 031 BPL 2$ ;NO
040 KLDCP 003 018 .IF NDF TELASB
041 TST DL11EFLG ;DOING DL11E ?
042 CONS11 002 007 BEQ 1$ ;NO
043 PRM11 035 015 BEG11 002 021 BIT #DLCTS,@$FSTKS ;STILL HAVE CLEAR TO SEND ?
044 CONS11 005 001 BEQ 3$ ;NO
045 .IFF
046 TST FSFLG
047 CONS11 002 007 BEQ 1$
048 PRM11 035 015 BEG11 002 021 BIT #DLCTS,@$FSTKS ;STILL HAVE CLEAR TO SEND?
049 CONS11 002 007 BEQ 1$ ;NO
050 .ENDC
051 BEG11 002 023 TSTB @$FSTPS ;IS FSTTY READY ?
052 CONS11 002 031 BPL 2$ ;NO
053
054 1$: CLC ;ALL READY, C-BIT CLEAR RETURN
055 PRM11 011 022 RTS PC
056
057 2$: SEC ;NOT READY
058 PRM11 011 022 RTS PC
059
060 KLDCP 003 018 .LIF NDF TELASB
061 CONS11 061 030 3$: JMP FSDISC ;DL11E DISCONNECT
062
063 BEG11 002 016 $TOOUT: MOVB $TOCHR,@$TPB ;PRINT ON CTY
064
065 KLDCP 003 018 .IF NDF TELASB
066 TST DL11EFLG
067 CONS11 002 007 BEQ 1$
068 .IFF
069 TST FSFLG
070 CONS11 002 007 BEQ 1$
071 PRM11 035 015 BEG11 002 021 BIT #DLCTS,@$FSTKS ;STILL HAVE CLEAR TO SEND
072 CONS11 002 007 BEQ 1$
073 .ENDC
074 BEG11 002 024 MOVB $TOCHR,@$FSTPB ;PRINT ON FSTTY
075 PRM11 011 022 1$: RTS PC
␈↓& READ AN OCTAL NUMBER FROM THE TTY SUB11.PAL[KL,SYS] 10/05/77 Page 26␈↓'α
001 .SBTTL READ AN OCTAL NUMBER FROM THE TTY
002
003 ;REGISTER USAGE
004 ;R0 = TTY CHARACTER 7 BIT FROM $INBUF
005 ;R2 = WORK REGISTER
006 ;R3 = CLEARED/SET = NO OCTAL CHARS/AT LEAST 1 OCTAL CHAR
007
008 PRM11 011 016 $TTIOCT:CLR R2 ;CLEAR WORK REGISTER
009 PRM11 011 022 026 040 JSR PC,$TMINUS ;CHECK FOR PLUS & MINUS
010 PRM11 003 018 1$: TTICHR ;PICKUP THIS CHARACTER
011 CONS11 002 031 BCS 2$
012
013 PRM11 011 014 CMPB R0,#60 ;MAKE SURE THIS CHARACTER
014 CONS11 002 031 BLT 2$ ;IS AN OCTAL DIGIT
015 PRM11 011 014 CMPB R0,#67
016 CONS11 002 031 BGT 2$
017
018 PRM11 011 017 INC R3 ;TO SHOW I GOT ONE CHARACTER
019
020 PRM11 011 016 ASL R2
021 PRM11 011 016 ASL R2
022 PRM11 011 016 ASL R2
023
024 PRM11 011 014 BIC #177770,R0
025 PRM11 011 014 PRM11 011 016 ADD R0,R2
026 CONS11 002 007 BR 1$
027
028 PRM11 011 014 2$: CLR R0 ;SET UP FOR EXIT
029
030 PRM11 011 017 TST R3 ;DID WE GET ANY DATA
031 026 038 BEQ $$PEX7 ;NO, ERROR RETURN
032
033 PRM11 011 016 PRM11 011 014 MOV R2,R0
034 PRM11 011 018 TST R4 ;NEGATE FLAG SET ?
035 026 037 BEQ $$PEX6 ;NO
036 PRM11 011 014 NEG R0 ;YES, MAKE NUMBER NEGATIVE
037 033 008 $$PEX6: JMP $TTERM ;VERIFY TERMINATION & EXIT
038 PRM11 008 051 $$PEX7: EXITERR ;ERROR RETURN
039
040 PRM11 011 017 $TMINUS:CLR R3 ;CLEAR CHAR COUNTER
041 PRM11 011 018 CLR R4 ;CLEAR NEGATE FLAG
042 PRM11 011 019 MOV $INPTC,R5 ;SAVE INPUT POINTER
043 PRM11 003 018 TTICHR ;GET 1ST CHAR
044 022 001 BCS 82$ ;NONE AVAILABLE
045 PRM11 011 014 CMPB #'+,R0
046 021 031 BEQ 80$
047 PRM11 011 014 CMPB #'-,R0 ;NEGATE ?
048 021 038 BNE 81$ ;BR IF NO
049 PRM11 011 018 INC R4 ;YES, SET NEGATE FLAG
050 PRM11 011 019 80$: INC R5 ;YES, ADVANCE PAST -
051 PRM11 011 019 81$: MOV R5,$INPTC
052 PRM11 011 022 82$: RTS PC
␈↓& READ A DECIMAL NUMBER FROM THE TTY SUB11.PAL[KL,SYS] 10/05/77 Page 27␈↓'α
001 .SBTTL READ A DECIMAL NUMBER FROM THE TTY
002
003 PRM11 011 016 $TTIDEC:MOV #$TTSAV,R2 ;RESERVE STORAGE
004 PRM11 011 022 026 040 JSR PC,$TMINUS ;CHECK FOR PLUS & MINUS
005 PRM11 003 018 1$: TTICHR ;READ IN A CHARACTER
006 CONS11 002 031 BCS 2$
007 PRM11 011 014 CMPB R0,#60 ;MAKE SURE THIS CHARACTER
008 CONS11 002 031 BLT 2$ ;IS A DIGIT BETWEEN 0 & 9
009 PRM11 011 014 CMPB R0,#71
010 CONS11 002 031 BGT 2$
011 PRM11 011 017 INC R3 ;SO I KNOW I GOT A DIGIT
012 PRM11 011 014 BIC #177760,R0 ;DON'T LET NUMBER GET TO BIG
013 PRM11 011 014 PRM11 011 016 MOVB R0,(R2)+
014 CONS11 002 007 BR 1$
015 PRM11 011 014 2$: CLR R0 ;CLEAR OUTPUT
016 PRM11 011 017 TST R3 ;DID WE GET ANY THING
017 CONS11 034 069 BEQ 6$ ;NO
018
019 ;NOW WE CONVERT IT
020
021 PRM11 011 015 CLR R1 ;CLEAR TABLE INDEX
022 PRM11 011 016 3$: CMP R2,#$TTSAV
023 CONS11 024 048 BLT 5$ ;YES NORMAL EXIT
024 PRM11 011 016 PRM11 011 019 MOVB -(R2),R5 ;PUT IN R5
025 PRM11 011 019 4$: DEC R5 ;DONE YET
026 CONS11 035 053 BLT 7$
027 SBST11 002 045 PRM11 011 014 ADD $TBLL(R1),R0 ;TALLY IT UP
028 CONS11 004 051 BR 4$
029 PRM11 011 015 7$: TST (R1)+ ;UPDATE TABLE TALLY
030 CONS11 005 001 BR 3$
031 PRM11 011 018 5$: TST R4 ;NEGATE NUMBER ?
032 CONS11 019 049 BEQ 9$
033 PRM11 011 014 NEG R0 ;YES
034 026 037 9$: BR $$PEX6 ;RETURN
035 026 038 6$: BR $$PEX7 ;ERROR RETURN
␈↓& READ A 12 DIGIT OCTAL (36 BIT) NUMBER SUB11.PAL[KL,SYS] 10/05/77 Page 28␈↓'α
001 .SBTTL READ A 12 DIGIT OCTAL (36 BIT) NUMBER
002
003 ;$0FLG, 0=NO DATA; 0,-1=ONE DATA WORD; -1,-1= TWO PART DATA
004 ;DATA IS TRUNCATED TO 6 OCTALS IN EITHER HALF OF 2 PART DATA
005 ;DATA IS TRUNCATED TO 12 OCTALS IN 1 PART DATA
006 ;DURING CONVERSION
007 ;1 PART DATA; $0FLG =0
008 ;2 PART DATA; $0FLG=-1,0 DURING HI6; 0,-1 DURING LO6
009
010 PRM11 011 022 030 050 $TTI36: JSR PC,$TI36C
011 CLR $SVH
012 CLR $SVM
013 CLR $0FLG
014 CLR $NEG
015 PRM11 011 022 026 040 JSR PC,$TMINUS
016 PRM11 011 018 TST R4
017 CONS11 002 007 BEQ 1$
018 INCB $NEG+1 ;SET NEGATE FLAG
019
020 PRM11 003 018 1$: TTICHR ;READ A CHAR
021 028 037 99$: BCS 98$ ;BUFFER EMPTY
022
023 PRM11 011 014 CMPB R0,#60 ;MAKE SURE ITS OCTAL
024 CONS11 002 031 BLT 2$
025 PRM11 011 014 CMPB R0,#67
026 CONS11 002 031 BGT 2$
027
028 MOVB #-1,$0FLG ;WE GOT AT LEAST 1 DIGIT
029 CONS11 002 007 BR 1$
030
031 2$: TSTB $0FLG
032 CONS11 037 025 BEQ 69$
033 PRM11 011 014 PRM11 013 012 CMPB R0,#BLANK ;WAS IT A SPACE ?
034 CONS11 005 001 BNE 3$ ;NOPE
035 MOVB #-1,$0FLG+1 ;SET 2 WORD FLAG
036 PRM11 003 018 TTICHR ;GET 1ST CHAR OF 2ND PART
037 029 005 98$: BCS 97$
038 PRM11 011 014 CMPB #'+,R0
039 028 045 BEQ 71$
040 PRM11 011 014 CMPB #'-,R0 ;IS IT MINUS ?
041 CONS11 013 027 BEQ 21$ ;YES
042 DEC $INPTC ;NO, BACKUP INPUT POINTER
043 CONS11 002 007 BR 1$
044 21$: INCB $NEG ;SET 2ND PART NEGATE FLAG
045 CONS11 002 007 71$: BR 1$ ;PROCESS 2ND HALF WORD
␈↓& READ A 12 DIGIT OCTAL (36 BIT) NUMBER SUB11.PAL[KL,SYS] 10/05/77 Page 29␈↓'α
001 PRM11 011 019 3$: MOV R5,$INPTC ;RESET INPUT POINTER
002 CLRB $0FLG
003
004 PRM11 003 018 4$: TTICHR
005 029 037 97$: BCS 96$
006 PRM11 011 014 CMPB R0,#60
007 CONS11 024 048 BLT 5$
008 PRM11 011 014 CMPB R0,#67
009 CONS11 024 048 BGT 5$
010
011 PRM11 011 014 BICB #370,R0
012 PRM11 011 015 MOV #3,R1
013
014 PRM11 011 022 030 028 6$: JSR PC,SHFT36 ;SHIFT 36 BIT WORD LEFT 3
015
016 PRM11 011 014 BISB R0,$DRAM ;INSERT NEW CHAR
017 CONS11 004 051 BR 4$
018
019 5$: TSTB $0FLG+1 ;DOING 2 PART NUMBER ?
020 CONS11 035 063 BEQ 8$ ;BR IF NO
021
022 51$: TSTB $NEG+1 ;NEGATE UPPER PART ?
023 029 027 BEQ 52$ ;NO
024
025 PRM11 011 022 030 039 JSR PC,NEG36 ;NEGATE 36 BIT WORD
026
027 PRM11 011 015 52$: MOV #18.,R1 ;YES, MOVE NUMBER TO UPPER 18 BITS
028
029 PRM11 011 022 030 028 7$: JSR PC,SHFT36 ;SHIFT 36 BIT WORD LEFT 18
030
031 PRM11 011 019 MOV -(R5),$SVH ;SAVE UPPER BITS
032 PRM11 011 019 MOV -(R5),$SVM ;SAVE MIDDLE BITS
033 PRM11 011 022 030 050 JSR PC,$TI36C
034
035 SWAB $0FLG ;MAKE $0FLG 0,-1
036 PRM11 003 018 TTICHR ;GET 1ST CHAR OF 2ND PART
037 CONS11 019 049 96$: BCS 9$
038 PRM11 011 014 CMPB #'+,R0
039 CONS11 004 051 BEQ 4$
040 PRM11 011 014 CMPB #'-,R0 ;IS IT MINUS ?
041 CONS11 004 051 BEQ 4$ ;YES
042 DEC $INPTC ;NO, BACKUP INPUT POINTER
043 CONS11 004 051 BR 4$
␈↓& READ A 12 DIGIT OCTAL (36 BIT) NUMBER SUB11.PAL[KL,SYS] 10/05/77 Page 30␈↓'α
001 8$: TSTB $0FLG
002 CONS11 030 016 BEQ 10$ ;BR IF 1 PART
003 TSTB $NEG ;NEGATE LOWER PART ?
004 021 038 BEQ 81$ ;NO
005
006 PRM11 011 022 030 039 JSR PC,NEG36 ;NEGATE 36 BIT WORD
007
008 PRM11 011 015 81$: MOV #$DRAM+2,R1
009 PRM11 011 015 BIC #177774,(R1)
010 PRM11 011 015 BIS $SVM,(R1)+
011 PRM11 011 015 CLR (R1) ;CLEAR BITS 0-17
012 PRM11 011 015 BIS $SVH,(R1) ;REINSERT UPPER BITS
013 CONS11 030 024 BR 12$
014
015 10$: TSTB $NEG+1 ;MAKE NUMBER NEGATIVE ?
016 CONS11 030 024 BEQ 12$ ;BR IF NO
017 PRM11 011 022 030 039 JSR PC,NEG36 ;NEGATE 36 BIT WORD
018
019 12$: BIC #177760,$DRAM+4 ;STRIP OVERFLOW
020 PRM11 011 014 MOV #$DRAM,R0 ;RETURN STORAGE ADR IN R0
021 033 008 JMP $TTERM ;VERIFY TERMINATION & EXIT
022 PRM11 011 014 69$: CLR R0 ;NO DIGITS TYPED
023 PRM11 003 035 9$: TTERM ;VERIFY TERMINATION
024 PRM11 008 051 EXITERR ;ERROR RETURN
025
026 ;SHIFT 36 BIT WORD C(R1) PLACES LEFT
027
028 PRM11 011 019 SHFT36: MOV #$DRAM,R5
029 CLC
030 PRM11 011 019 ROL (R5)+
031 PRM11 011 019 ROL (R5)+
032 PRM11 011 019 ROL (R5)+
033 PRM11 011 015 DEC R1
034 030 028 BGT SHFT36
035 PRM11 011 022 RTS PC
036
037 ;NEGATE - TWO'S COMPLEMENT 36 BIT WORD
038
039 PRM11 011 015 NEG36: MOV #$DRAM,R1 ;MAKE 1'S COMPLEMENT
040 PRM11 011 015 COM (R1)+
041 PRM11 011 015 COM (R1)+
042 PRM11 011 015 COM (R1)
043 PRM11 011 015 MOV #$DRAM,R1
044 PRM11 011 015 ADD #1,(R1)+ ;MAKE THAT 2'S COMPLEMENT
045 PRM11 011 015 ADC (R1)+
046 PRM11 011 015 ADC (R1)
047 PRM11 011 015 BIC #177760,(R1) ;STRIP OVERFLOW
048 PRM11 011 022 RTS PC
049
050 PRM11 011 014 $TI36C: MOV #$DRAM,R0 ;CLEAR STORAGE
051 PRM11 011 014 CLR (R0)+
052 PRM11 011 014 CLR (R0)+
053 PRM11 011 014 CLR (R0)+
054 PRM11 011 022 RTS PC
␈↓& SIGNED MULTIPLY SUBROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 31␈↓'α
001 .SBTTL SIGNED MULTIPLY SUBROUTINE
002
003 PRM11 011 014 $MULTP: PUSH R0
004 PRM11 011 021 PRM11 011 015 MOV 22(SP),R1
005 PRM11 011 021 PRM11 011 014 MOV 20(SP),R0 ;MULTIPLICAND
006 PRM11 011 018 CLR R4 ;CLEAR SIGN
007 PRM11 011 014 TST R0 ;TEST SIGN
008 CONS11 002 007 BPL 1$
009
010 PRM11 011 018 INC R4 ;SET SIGN BIT
011 PRM11 011 014 NEG R0 ;MAKE MULTIPLICAND POSITIVE
012
013 PRM11 011 015 1$: TST R1 ;TEST SIGN OF MULTIPLIER
014 CONS11 002 031 BPL 2$
015
016 PRM11 011 018 DEC R4 ;UPDATE SIGN BIT
017 PRM11 011 015 NEG R1 ;MAKE MULTIPLIER POSITIVE
018
019 PRM11 011 017 2$: MOV #17.,R3 ;SET LOOP COUNT
020 PRM11 011 016 CLR R2 ;SET UP FOR MULTIPLY LOOP
021
022 CONS11 004 051 3$: BCC 4$ ;DONT ADD IF MULTIPLICAND IS ZERO
023 PRM11 011 015 PRM11 011 016 ADD R1,R2
024
025 PRM11 011 016 4$: ROR R2 ;POSITION THE PARTIAL PRODUCT
026 PRM11 011 014 ROR R0 ;AND THE MULTIPLICAND
027 PRM11 011 017 DEC R3 ;DONE YET
028 CONS11 005 001 BNE 3$ ;NOPE
029
030 PRM11 011 018 TST R4 ;TEST SIGN
031 CONS11 024 048 BEQ 5$ ;PRODUCT IS POSITIVE
032
033 PRM11 011 014 NEG R0 ;PRODUCT SHOULD BE NEGATIVE
034 PRM11 011 016 NEG R2
035 PRM11 011 014 SBC R0 ;SUBTRACT CARRY
036
037 PRM11 011 014 PRM11 011 021 5$: MOV R0,20(SP) ;MOST SIGNIFICANT BITS
038 PRM11 011 016 PRM11 011 021 MOV R2,22(SP) ;LEAST SIGNIFICANT BITS
039 PRM11 011 014 POP R0
040 PRM11 008 043 EXIT ;EXIT
␈↓& TELETYPE INPUT SPACE DELETE ROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 32␈↓'α
001 .SBTTL BREAK CHARACTER
002
003 $TTIBRK:DEC $INPTC ;BACKUP INPUT POINTER
004 PRM11 003 018 TTICHR
005 034 019 BCC $$PEX4 ;NOTHING IN BUFFER
006 PRM11 008 051 $$PEX5: EXITERR
007
008 .SBTTL TELETYPE INPUT SPACE DELETE ROUTINE
009
010 PRM11 003 018 $TTSDL: TTICHR
011 032 037 BCS $TTSDX ;BUFFER EMPTY
012 PRM11 011 014 PRM11 013 012 CMPB R0,#BLANK
013 032 010 BEQ $TTSDL ;DELETE SPACES
014 PRM11 011 014 PRM11 013 005 CMPB R0,#TAB
015 032 010 BEQ $TTSDL ;DELETE TABS
016 PRM11 011 014 CMPB #'-,R0 ;TREAT + OR -
017 CONS11 005 001 BEQ 3$ ;SAME AS NUMBER
018 PRM11 011 014 CMPB #'+,R0
019 CONS11 005 001 BEQ 3$
020 PRM11 011 014 CMPB R0,#60
021 CONS11 002 007 BLT 1$ ;BR IF NON-NUMBER
022 PRM11 011 014 CMPB R0,#71
023 CONS11 002 007 BGT 1$ ;BR IF NON-NUMBER
024 3$: DEC $INPTC ;NUMBER, BACKUP INPUT POINTER
025 034 019 BR $$PEX4 ;C-BIT CLEAR RETURN
026 PRM11 011 014 1$: CMPB R0,#': ;COLON OR SLASH, V-BIT & C-BIT SET
027 CONS11 030 016 BEQ 10$
028 PRM11 011 014 CMPB R0,#'/
029 CONS11 030 016 BEQ 10$
030 PRM11 011 014 CMPB R0,#'↑ ;UPARROW, Z-BIT & C-BIT SET
031 032 006 BNE $$PEX5
032 PRM11 011 008 PRM11 011 021 BIS #ZBIT,14(SP)
033 032 006 BR $$PEX5
034
035 PRM11 011 009 PRM11 011 021 10$: BIS #VBIT,14(SP)
036 032 006 BR $$PEX5
037 CONS11 060 034 $TTSDX: JMP $PARAM
␈↓& TELETYPE INPUT TERMINATION CHECK SUB11.PAL[KL,SYS] 10/05/77 Page 33␈↓'α
001 .SBTTL TELETYPE INPUT TERMINATION CHECK
002
003 $TTITRM:INC $INPTC ;BECAUSE "TTERM" DECREMENTS
004 PRM11 003 035 $TTBTRM:TTERM ;VERIFY TERMINATOR
005 032 037 BCS $TTSDX ;BAD, C-BIT SET RETURN
006 034 019 BR $$PEX4 ;OK
007
008 PRM11 011 014 $TTERM: PUSH R0
009 DEC $INPTC ;BACKUP INPUT POINTER
010 PRM11 003 018 TTICHR ;GET TERMINATION CHAR
011 CONS11 002 031 BCS 2$ ;NONE
012 033 023 PRM11 011 015 MOV #TRMTAB,R1 ;SETUP TERMINATION SCAN POINTER
013 PRM11 011 014 PRM11 011 015 1$: CMPB R0,(R1) ;CHAR MATCH LEGAL TERMINATOR ?
014 CONS11 002 031 BEQ 2$ ;YES
015 PRM11 011 015 TSTB (R1)+ ;NOT YET, GO TO NEXT
016 CONS11 005 001 BEQ 3$ ;NO MATCH, ERROR
017 CONS11 002 007 BR 1$
018 PRM11 011 014 2$: POP R0
019 034 019 BR $$PEX4 ;OK, C-BIT CLEAR RETURN
020 PRM11 011 014 3$: POP R0
021 032 006 BR $$PEX5 ;ERROR, C-BIT SET RETURN
022
023 PRM11 013 013 PRM11 013 005 TRMTAB: .BYTE SPACE,TAB
024 PRM11 013 014 PRM11 013 010 .BYTE COMMA,CR
025 PRM11 013 032 .BYTE ALTMOD,72 ;COLON
026 .BYTE 57,0 ;SLASH
␈↓& TELETYPE INPUT C-RAM ADDRESS SUB11.PAL[KL,SYS] 10/05/77 Page 34␈↓'α
001 .SBTTL INPUT & CHECK OCTAL NUMBER
002
003 PRM11 003 029 $TTCOCT:TTISDL
004 032 037 BCS $TTSDX
005 PRM11 003 021 TTIOCT
006 032 037 BCS $TTSDX ;NON-OCTAL
007 034 019 BR $$PEX4 ;OK
008
009 PRM11 003 022 $TOCTE: TTCOCT
010 PRM11 011 014 BIT #1,R0 ;ONLY EVEN OCTAL
011 032 037 BNE $TTSDX
012 034 019 BR $$PEX4
013
014 .SBTTL TELETYPE DELETE SPACES & INPUT OCTAL NUMBER
015
016 PRM11 003 022 $TTSDO: TTCOCT
017 PRM11 011 014 TST R0 ;MUST BE POSITIVE ALSO
018 032 037 BMI $TTSDX
019 $$PEX4=.
020 PRM11 008 043 EXIT
021
022 .SBTTL TELETYPE DELETE SPACES & INPUT 36BIT NUMBER
023
024 PRM11 003 029 $TTS36: TTISDL ;DELETE SPACES
025 032 037 BCS $TTSDX
026 PRM11 003 027 TTI36 ;INPUT 36 BIT NUMBER
027 032 037 BCS $TTSDX
028 034 019 BR $$PEX4
029
030 .SBTTL TELETYPE INPUT C-RAM ADDRESS
031
032 PRM11 003 030 $TICRA: TTISDO ;GET ADDRESS
033 PRM11 011 014 CMP R0,#2777
034 034 019 BLE $$PEX4
035 CONS11 058 001 JMP ADRERR ;TOO BIG
␈↓& PRINT CHARACTER IMMEDIATE SUB11.PAL[KL,SYS] 10/05/77 Page 35␈↓'α
001 .SBTTL SHIFT R0 RIGHT/LEFT ROUTINES
002
003 PRM11 011 015 $SHFTR: MOV @$EMADR,R1 ;GET SHIFT COUNT
004 PRM11 011 014 1$: ASR R0 ;SHIFT RIGHT
005 PRM11 011 015 DEC R1
006 CONS11 002 007 BGT 1$
007 PRM11 008 047 $SHFTX: EXITSKP ;SKIP OVER TRAILING PARAMETER
008
009 PRM11 011 015 $SHFTL: MOV @$EMADR,R1
010 PRM11 011 014 1$: ASL R0 ;SHIFT LEFT
011 PRM11 011 015 DEC R1
012 CONS11 002 007 BGT 1$
013 035 007 BR $SHFTX
014
015 .SBTTL PRINT MESSAGE, CONDITIONAL DEPENDING ON "RPTFLG"
016
017 $$PMSR: TSTB RPTFLG ;DOES REPEAT FLAG ALLOW PRINTING ?
018 035 007 BNE $SHFTX ;NO
019
020 .SBTTL PRINT MESSAGE
021
022 PRM11 011 014 $$PMSG: MOV @$EMADR,R0 ;MESSAGE ADDRESS TO R0
023 PRM11 004 006 PNTAL ;PRINT
024 035 007 BR $SHFTX ;SKIP RETURN
025
026 .SBTTL PRINT CHARACTER IMMEDIATE
027
028 PRM11 011 016 $PNTCI: MOV $EMADR,R2 ;GET DATA ADDRESS
029 PRM11 011 016 PRM11 011 015 MOVB (R2)+,R1 ;GET FIRST BYTE
030 PRM11 004 035 PLDBUF ;INSERT IN BUFFER
031 PRM11 011 016 PRM11 011 015 MOVB (R2),R1 ;GET 2ND BYTE
032 CONS11 002 007 BEQ 1$ ;IS THERE ANY ?
033 PRM11 004 035 PLDBUF ;YES, INSERT IN BUFFER
034 035 007 1$: BR $SHFTX ;SKIP RETURN
␈↓& SAVE AND RESTORE R0-R5 ROUTINES SUB11.PAL[KL,SYS] 10/05/77 Page 36␈↓'α
001 .SBTTL SMALL TIME DELAY
002
003 PRM11 011 015 $DELAY: MOV #10.,R1
004 PRM11 011 015 1$: DEC R1
005 CONS11 002 007 BNE 1$
006 PRM11 008 043 EXIT
007
008 ;CONSOLE TIME DELAY FOR REPEAT LOOPS
009
010 PRM11 003 029 .TD: TTISDL
011 CONS11 002 007 BCS 1$ ;NO ARG, DO ONCE
012 PRM11 003 024 TTIDEC
013 CONS11 002 007 BCS 1$ ;DO ONCE ANYWAY
014 PRM11 011 014 PRM11 011 015 MOV R0,R1 ;SAVE DELAY COUNT
015 CONS11 002 031 BR 2$
016 PRM11 011 015 1$: CLR R1
017 PRM11 005 010 2$: TDELAY ;SMALL TIME DELAY
018 PRM11 011 015 DEC R1 ;DONE REQUESTED DELAYS ?
019 CONS11 002 031 BGT 2$
020 CONS11 003 001 JMP $KONSL
021
022 .SBTTL SAVE AND RESTORE R0-R5 ROUTINES
023
024 PRM11 011 014 $REGSAV:PUSH R0
025 PRM11 011 021 PUSH 16(SP)
026 PRM11 011 021 PUSH 16(SP)
027 RTI
028
029 ;*RESTORE R0-R5
030
031 PRM11 011 021 PRM11 011 021 $REGRST:MOV 14(SP),34(SP)
032 PRM11 011 021 PRM11 011 021 MOV 12(SP),32(SP)
033 PRM11 011 021 ADD #16,SP
034 PRM11 011 016 PRM11 011 015 POP <R0,R5,R4,R3,R2,R1>
035 RTI
␈↓& SAVE AND RESTORE R0-R5 ROUTINES SUB11.PAL[KL,SYS] 10/05/77 Page 37␈↓'α
001 ;FATAL VECTOR INTERRUPT
002
003 PRM11 011 014 $FATLE: PUSH R0
004 PRM11 003 004 PMSG <?FATAL INTR>
005 037 014 BR $EOR
006
007 PRM11 011 014 $TIMOT: PUSH R0
008 PRM11 008 006 PMSG <?BUS TIMEOUT>
009 037 014 BR $EOR
010
011 PRM11 011 014 $RESVD: PUSH R0
012 PRM11 008 006 PMSG <?RESERVED INST>
013
014 $EOR: CLR TENRUN
015 PRM11 011 014 POP R0
016 PRM11 011 019 PRM11 011 014 PUSH <R1,R2,R3,R4,R5,R0>
017 037 028 BR $EOR2
018
019 ;STACK UNDERFLOW
020
021 PRM11 011 003 PRM11 011 021 $STUF: MOV #STACK-2,SP
022 PRM11 011 021 MOV SP,$KONSP
023 PRM11 008 006 PMSG <?ST UNFLO>
024 CLR PCMDFLG
025 BEG11 002 007 JMP $CNTLC
026
027 PRM11 008 006 $NOTAS: PMSG <?UNAS EMT>
028 $EOR2: CLR PCMDFLG
029 005 019 JMP $PH1
030
031 PRM11 011 014 $FATAL: PUSH R0
032 PRM11 003 004 PMSG <?FATAL>
033 037 028 BR $EOR2
␈↓& EMT TABLE SUB11.PAL[KL,SYS] 10/05/77 Page 38␈↓'α
001 .SBTTL EMT DECODER
002
003 ;*THIS ROUTINE WILL PICKUP THE LOWER BYTE OF THE "EMT" INSTRUCTION
004 ;*AND USE IT TO INDEX THROUGH THE EMT TABLE FOR THE STARTING ADDRESS
005 ;*OF THE DESIRED ROUTINE. THEN USING THE ADDRESS OBTAINED IT WILL
006 ;*GO TO THAT ROUTINE.
007
008 PRM11 011 021 $EMTRP: CMP SP,#COREND-600+20
009 037 021 BLE $STUF ;OFF BOTTOM OF STACK
010 PRM11 011 019 PRM11 011 014 PUSH <R1,R2,R3,R4,R5,R0>
011 PRM11 011 021 PRM11 011 014 MOV 14(SP),R0 ;GET EMT ADDRESS (+2)
012 PRM11 011 021 BIC #17,16(SP) ;CLEAR ALL STATUS BITS
013 PRM11 011 014 MOV R0,$EMADR ;SAVE
014 PRM11 011 014 PRM11 011 014 MOV -(R0),R0 ;GET RIGHT BYTE OF EMT
015 PRM11 011 014 BIC #177400,R0
016 PRM11 011 014 038 029 CMP R0,#<<$EMTAE-$EMTAD>/2>
017 037 027 BGE $NOTAS ;EMT IN RANGE ?
018 PRM11 011 014 SL R0,1 ;ROUND TO WORD ADDRESS
019 038 029 PRM11 011 014 MOV $EMTAD(R0),R0 ;INDEX TO TABLE
020 PRM11 011 014 RTS R0 ;GO TO ROUTINE
021
022 .SBTTL EMT TABLE
023
024 ;*THIS TABLE CONTAINS THE STARTING ADDRESSES OF THE ROUTINES CALLED
025 ;*BY THE "EMT" INSTRUCTION.
026
027 ; ROUTINE
028 ; -------
029 037 031 $EMTAD: $FATAL ;EMT + 0
030 005 007 $ERRHLT ; 1
031 005 003 $PRGHLT ; 2
032 CONS11 039 006 $RUNLP ; 3
033 021 007 $TTILIN ; 4
034 018 003 $TTICHR ; 5
035 018 019 $TTLOOK ; 6
036 026 008 $TTIOCT ; 7
037 034 003 $TTCOCT ;EMT + 10
038 027 003 $TTIDEC ; 11
039 019 007 $TTIYES ; 12
040 018 032 $TTALTM ; 13
041 028 010 $TTI36 ; 14
042 032 003 $TTIBRK ; 15
043 032 010 $TTSDL ; 16
044 034 016 $TTSDO ; 17
045 034 024 $TTS36 ;EMT + 20
046 034 032 $TICRA ; 21
047 033 003 $TTITRM ; 22
048 033 004 $TTBTRM ; 23
049 006 003 $PNTAL ; 24
050 035 022 $$PMSG ; 25
051 035 017 $$PMSR ; 26
052 006 036 $PNTCHR ; 27
␈↓& EMT TABLE SUB11.PAL[KL,SYS] 10/05/77 Page 39␈↓'α
001 006 031 $PNTNBR ;EMT + 30
002 013 003 $PCRLF ; 31
003 006 040 $PSPACE ; 32
004 006 043 $PSLASH ; 33
005 006 046 $PCOMMA ; 34
006 016 003 $PNTOCT ; 35
007 016 008 $PNTOSC ; 36
008 017 003 $PNTDEC ; 37
009 014 003 $PNT18 ;EMT + 40
010 014 011 $PNT23 ; 41
011 014 025 $PNT36 ; 42
012 020 015 $PFORCE ; 43
013 020 022 $PNORML ; 44
014 013 008 $PBELL ; 45
015 013 017 $PNTODC ; 46
016 013 014 $PODT ; 47
017 036 024 $REGSAV ;EMT + 50
018 036 031 $REGRST ; 51
019 045 057 $CMP36 ; 52
020 035 003 $SHFTR ; 53
021 035 009 $SHFTL ; 54
022 043 006 $SETFLG ; 55
023 036 003 $DELAY ; 56
024 020 003 $SWITCH ; 57
025 020 010 $SWTSAM ;EMT + 60
026 003 019 $EOP ; 61
027 004 016 $ERREOP ; 62
028 003 003 $EOPSET ; 63
029 .IF DF MONASB
030 APT11 010 001 $COMLIN ; 64
031 APT11 008 001 $COMSND ; 65
032 APT11 005 005 $COMACK ; 66
033 APT11 005 009 $COMNAK ; 67
034 APT11 014 001 $COMCLR ;EMT + 70
035 APT11 009 003 $COMCTL ; 71
036 .IFF
037 .REPT 6
038 037 031 $FATAL ;64-71
039 .ENDR
040 .ENDC
041 031 003 $MULTP ; 72
042 BR11 010 009 $WCRAM ; 73
043 BR11 012 003 $RCRAM ; 74
044 BR11 009 003 $WWADR ; 75
045 BR11 008 022 $MRESET ; 76
046 048 003 $TENSP ; 77
047 046 003 $SM ;EMT + 100
048 047 003 $XCT ; 101
049 BR11 022 010 $LODAR ; 102
050 044 058 $EXAM ; 103
051 044 052 $EXAMT ; 104
052 044 035 $DPOS ; 105
053 044 033 $DPOST ; 106
054 045 015 $DPOSVR ; 107
␈↓& EMT TABLE SUB11.PAL[KL,SYS] 10/05/77 Page 40␈↓'α
001 045 013 $DPSVT ;EMT + 110
002 044 023 $D10MON ; 111
003 044 006 $D10ZRO ; 112
004 BR11 002 039 $DTEBAS ; 113
005 BR11 004 026 $DFXCT ; 114
006 BR11 004 014 $DXCTT ; 115
007 BR11 003 013 $DFRD ; 116
008 BR11 007 006 $DFRDMV ; 117
009 BR11 006 020 $DFWRT ;EMT + 120
010 BR11 005 027 $DFWIR ; 121
011 BR11 004 020 $DFSCLK ; 122
012 BR11 024 009 $DFPC ; 123
013 BR11 024 013 $DFVMA ; 124
014 BR11 024 015 $DFADB ; 125
015 BR11 018 003 $RDRAM ; 126
016 BR11 017 003 $WDRAM ; 127
017 BR11 019 001 $DRAMAD ;EMT + 130
018 BR11 021 003 $BURST ; 131
019 CONS11 022 013 $PNTCPU ; 132
020 CONS11 010 006 $PRGCMD ; 133
021 014 019 $P36B ; 134
022 047 024 $ECLOK ; 135
023 041 074 $ESYNC ; 136
024 013 039 $PADR ; 137
025 BR11 003 010 $DFRDT ;EMT + 140
026 BR11 007 019 $DWRTT ; 141
027 FD11 004 003 $PCRAM ; 142
028 FD11 011 003 $PDRAM ; 143
029 019 028 $TTBACK ; 144
030 CONS11 047 003 $TENSW ; 145
031 015 038 $PROL36 ; 146
032 BR11 022 037 $SETMPH ; 147
033 BR11 024 007 $DFVMH ;EMT + 150
034 008 003 $PRINTT ; 151
035 009 003 $PTTY ; 152
036
037 .IF DF LPTASB
038 011 005 $PLPT ; 153
039 .IFF
040 037 031 $FATAL
041 .ENDC
042
043 007 003 $PLDBUF ; 154
044 DTA11 023 003 $R50UPK ; 155
045 DTA11 022 019 $DTINIT ; 156
046
047 .IF DF RPASB
048 $RPINIT ; 157
049 .IFF
050 037 031 $FATAL
051 .ENDC
052
053 DTA11 021 018 $DVDATA ;EMT + 160
054 DTA11 025 003 $DTREAD ; 161
055
056 .IF DF RPASB
057 $RPREAD ; 162
058 .IFF
059 037 031 $FATAL
060 .ENDC
061
062 DTA11 021 003 $DVFRAM ; 163
063 DTA11 022 009 $DVWRD ; 164
064 DTA11 027 010 $ASCR50 ; 165
065
066 .IF DF RPASB
067 $RPLOAD ; 166
068 $RPFIND ; 167
␈↓& EMT TABLE SUB11.PAL[KL,SYS] 10/05/77 Page 41␈↓'α
001 $RPLKUP ;EMT + 170
002 $RPRDFL ; 171
003 $RPWRFL ; 172
004 $RPWRIT ; 173
005 $RPADDR ; 174
006 $RPBASE ; 175
007 .IFF
008 .REPT 8
009 037 031 $FATAL
010 .ENDR
011 .ENDC
012
013 CONS11 047 042 $TENCHR ; 176
014 007 036 $PNTBAK ; 177
015 034 009 $TOCTE ;EMT + 200
016 033 008 $TTERM ; 201
017 BR11 020 035 $CLKPRM ; 202
018 BR11 015 005 $MICNUL ; 203
019 BR11 016 003 $MICFIL ; 204
020 DTA11 025 006 $DTWRT ; 205
021 DTA11 003 003 $NAMEXT ; 206
022 DTA11 018 048 $DTAFILE ; 207
023
024 .IF DF RPASB
025 $RPFILE ;EMT + 210
026 .IFF
027 037 031 $FATAL
028 .ENDC
029
030 DTA11 024 003 $DTRDFL ; 211
031 DTA11 024 019 $DTWTFL ; 212
032 DTA11 024 029 $DTBASE ; 213
033 035 028 $PNTCI ; 214
034 007 046 $PNTRST ; 215
035 CONS11 010 003 $PRGNPT ; 216
036 007 043 $TTPINI ; 217
037 .IF DF MONASB
038 APT11 005 012 $COMCMD ;EMT + 220
039 APT11 009 001 $CMRTRY ; 221
040 APT11 013 001 $COMENQ ; 222
041 APT11 013 037 $COMEOT ; 223
042 .IFF
043 .REPT 4
044 037 031 $FATAL
045 .ENDR
046 .ENDC
047 021 003 $TTILNW ; 224
048 CONS11 011 003 $TTICCL ; 225
049 CONS11 024 055 $DFLEGAL ; 226
050 006 049 $PTAB ; 227
051
052 .IF DF RXASB
053 $RXFILE ;EMT + 230
054 $RXINIT ; 231
055 $RXRDFL ; 232
056 $RXWTFL ; 233
057 $RXBASE ; 234
058 $RXREAD ; 235
059 $RXWRT ; 236
060 .IFF
061 .REPT 7
062 037 031 $FATAL
063 .ENDR
064 .ENDC
065
066 .IF DF RPASB
067 $RPERR ; 237
068 .IFF
069 037 031 $FATAL
070 .ENDC
071
072 $EMTAE=.
073
074 PRM11 011 014 $ESYNC: PUSH R0
075 037 027 JMP $NOTAS
␈↓& POWER DOWN AND UP ROUTINES SUB11.PAL[KL,SYS] 10/05/77 Page 42␈↓'α
001 .SBTTL POWER DOWN AND UP ROUTINES
002
003 042 009 PRM11 011 033 $PWRDN: MOV #$PWRUP,@#PWRVEC ;SET UP VECTOR
004 $ILLUP: HALT
005 042 004 BR $ILLUP ;HANG UP
006
007 ;POWER UP ROUTINE
008
009 PRM11 012 045 PRM11 011 043 $PWRUP: MOV #CPUPR,PS ;SET CPU PRIORITY
010 PRM11 011 003 PRM11 011 021 MOV #STACK,SP ;SET SP
011 KLDCP 002 006 .LIF DF SAILVR
012 PRM11 011 022 049 004 JSR PC,CLKSTA ;START CLOCK
013 PRM11 011 019 CLR R5 ;WAIT LOOP FOR THE TTY
014 PRM11 011 019 1$: INC R5 ;WAIT FOR THE INC
015 CONS11 002 007 BNE 1$ ;OF WORD
016 042 003 PRM11 011 033 MOV #$PWRDN,@#PWRVEC ;SET UP THE POWER DOWN VECTOR
017 PRM11 011 004 CLR CONSOL-2
018 CLR LPTFLG ;DISCONNECT LINE PRINTER
019 KLDCP 003 018 .IF NDF TELASB
020 CLR DL11EFLG ;DISCONNECT KLINIK !!!
021 .IFF
022 CLR FSFLG
023 PRM11 035 023 BEG11 002 021 MOV #DLRTS,@$FSTKS
024 PRM11 011 014 MOV #40000.,R0 ;40000*2.36USEC = 94.4 MS
025 PRM11 011 014 SOB R0,. ;WAIT FOR DATA SET TO HANG UP
026 PRM11 035 021 BEG11 002 021 BIS #DLRTS!DLDTR!DLDIE,@$FSTKS ;SET DATA TERM READY AND DATA SET INT EN
;B
027 ;LEAVE REQUEST TO SEND UP ALTHOUGH WE DON'T USE IT
028 .ENDC
029 INC $PWRCNT ;COUNT POWER RESTARTS
030
031 KLDCP 002 006 .IF NDF SAILVR
032 PRM11 034 005 PRM11 011 017 MOV #KWLKS,R3
033 PRM11 011 019 CLR R5
034 PRM11 011 017 10$: TSTB (R3) ;WAIT FOR CLOCK TICK
035 CONS11 030 016 BPL 10$
036 PRM11 011 017 BIC #200,(R3)
037 .IFF
038 CLR CLKFLG
039 10$: TST CLKFLG
040 CONS11 030 016 BEQ 10$
041 CLR CLKFLG
042 .ENDC
043 PRM11 011 019 INC R5 ;COUNT IT
044 PRM11 011 019 CMP R5,#<5.*60.> ;WAITED 5 SEC FOR TTY POWER ?
045 CONS11 030 016 BLE 10$ ;NOT YET
046 PRM11 008 006 PMSG <\"POWER RESTART" >
047 PRM11 011 014 MOV $PWRCNT,R0
048 PRM11 004 019 PNTDEC
049 PRM11 004 012 PCRLF
050 PRM11 011 019 CLR R5 ;CLEAR TIME-UP COUNTER
051 PRM11 011 022 025 003 2$: JSR PC,$TIRDY ;ANY OPERATOR INTERRUPT ?
052 CONS11 005 001 BCS 3$ ;NO
053 PRM11 011 018 MOVB $TICHR,R4 ;YES, GET CHAR
054 PRM11 011 018 BICB #200,R4
055 PRM11 013 023 PRM11 011 018 CMPB #CNTRLC,R4 ;IS IT CONTROL C ?
056 CONS11 004 051 BEQ 4$ ;YES, ABORT TIME-UP WAIT
057 3$:
058 KLDCP 002 006 .IF NDF SAILVR
059 PRM11 011 017 TSTB (R3) ;CLOCK SET ?
060 CONS11 002 031 BPL 2$ ;NO
061 PRM11 011 017 BIC #200,(R3)
062 .IFF
063 TST CLKFLG
064 CONS11 002 031 BEQ 2$
065 .ENDC
066 PRM11 011 019 INC R5 ;COUNT CLOCK TICK
067 PRM11 011 019 CMP R5,#<5.*60.> ;WAITED 5 SECONDS FOR KL10 ?
068 CONS11 002 031 BLE 2$ ;NOT YET
069 BEG11 002 006 4$: JMP START
␈↓& EXIT SUBROUTINE SUB11.PAL[KL,SYS] 10/05/77 Page 43␈↓'α
001 .SBTTL EXIT SUBROUTINE
002
003 PRM11 011 006 PRM11 011 021 $EXITE: BIS #CBIT,14(SP) ;SET C-BIT ERROR
004 043 010 BR $EXIT
005
006 PRM11 011 015 $SETFLG:MOV @$EMADR,R1 ;SET -1 TO FLAG WORD
007 PRM11 011 015 MOV #-1,(R1)
008
009 PRM11 011 021 $EXITS: ADD #2,12(SP) ;SKIP RETURN
010 PRM11 011 016 PRM11 011 015 $EXIT: POP <R5,R4,R3,R2,R1>
011 1$: RTT ;RETURN TO USER
012
013 ;MEMORY PARITY
014
015 MEMPE: TST MEMPEF ;BEEN HERE ALREADY ?
016 CONS11 002 007 BPL 1$
017 PRM11 003 004 FATAL ;YES
018 1$: COM MEMPEF ;SET FLAG
019 PRM11 034 022 PRM11 034 013 BIC #MMPIE,MMLPBA ;CLEAR ENABLE
020 PRM11 034 016 PRM11 034 013 BIT #MMERRF,MMLPBA ;ERROR SET ?
021 CONS11 002 031 BNE 2$
022 PRM11 003 004 FATAL ;NO, HOW DID THIS GET HERE ?
023 PRM11 008 006 2$: PMSG <?PARITY>
024 BEG11 002 007 JMP $CNTLC
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 44␈↓'α
001 .SBTTL PDP10 OPERATIONS
002
003 ;PDP-10 MEMORY ZERO
004 ; R0 = COUNT, R1 = POINTER TO START ADDRESS
005
006 PRM11 011 014 PRM11 011 019 $D10ZRO: MOV R0,R5 ;SAVE COUNT
007 PRM11 011 019 DEC R5
008 PRM11 011 018 MOV #.DPXAD,R4
009 PRM11 011 015 PRM11 011 018 MOVB (R1)+,(R4)+
010 PRM11 011 015 PRM11 011 018 MOVB (R1)+,(R4)+
011 PRM11 011 015 PRM11 011 018 MOVB (R1),(R4)
012 PRM11 011 018 TST -(R4)
013 CLR @.DAT1 ;CLEAR DTE20 DATA WORDS
014 CLR @.DAT2
015 CLR @.DAT3
016
017 PRM11 011 018 PRM11 011 015 $D10ZX: MOV R4,R1 ;POINTER TO ADDRESS
018 044 049 BR $DPSX1
019
020 ;PDP-10 SET -1 TO FLAG WORD
021 ; ADDRESS IN TRAILING PARAMETER
022
023 PRM11 011 015 $D10MON: MOV #L10ADR+2,R1 ;SETUP 10 ADR BLOCK POINTER
024 PRM11 011 015 CLR (R1)
025 PRM11 011 015 MOV @$EMADR,-(R1) ;PUT 10 ADR IN ADR BLOCK
026 BEG11 002 037 PRM11 011 014 MOV #TENMO,R0 ;SETUP -1 DATA WORD
027 PRM11 011 021 ADD #2,12(SP) ;SKIP RETURN OVER TRAILING PARAMETER
028 PRM11 011 019 CLR R5
029 044 037 BR $DPOSX
030
031 ;EXAMINE AND DEPOSIT 10 MEMORY
032
033 PRM11 011 022 045 070 $DPOST: JSR PC,$10ADR ;SETUP PARAMETERS
034
035 PRM11 011 019 $DPOS: CLR R5
036 PRM11 011 022 045 001 JSR PC,$D10ADR ;SETUP PDP-10 ADDRESS
037 PRM11 011 016 $DPOSX: MOV #$TEMP0,R2 ;STUFF THE DEXWRDS
038 PRM11 011 014 PRM11 011 016 MOVB (R0)+,(R2)+
039 PRM11 011 014 PRM11 011 016 MOVB (R0)+,(R2)+
040 PRM11 011 014 PRM11 011 016 MOVB (R0)+,(R2)+
041 PRM11 011 014 PRM11 011 016 MOVB (R0)+,(R2)+
042 PRM11 011 014 PRM11 011 016 MOVB (R0)+,(R2)+
043 PRM11 011 014 PRM11 011 016 MOVB (R0),(R2)+
044 PRM11 011 016 BIC #177760,-(R2)
045 PRM11 011 017 MOV .DAT1,R3
046 PRM11 011 016 PRM11 011 017 MOV (R2),(R3) ;BITS 00-03 TO .DAT1
047 PRM11 011 016 PRM11 011 017 MOV -(R2),-(R3) ;BITS 04-19 TO .DAT2
048 PRM11 011 016 PRM11 011 017 MOV -(R2),-(R3) ;BITS 20-35 TO .DAT3
049 PRM11 015 009 PRM11 011 015 $DPSX1: BIS #DEP,2(R1) ;SET FLAG
050 044 063 BR $EXDEP
051
052 PRM11 011 022 045 070 $EXAMT: JSR PC,$10ADR ;SETUP PARAMETERS
053 044 061 BR $EXAMX
054
055 ;EXAMINE 10 CORE. R0 POINTS TO 2 WORDS CONTAINING THE 10 ADDRESS
056 ; (BITS 20:35 IN FIRST WORD, 14:19 IN SECOND WORD)
057 ; RESULT RETURNED IN $DRAM (20:35), $DRAM+2 (4:19), $DRAM+4 (0:3)
058 PRM11 011 014 PRM11 011 015 $EXAM: MOV R0,R1
059 PRM11 011 022 045 001 JSR PC,$D10ADR ;SETUP PDP-10 ADDRESS
060 PRM11 011 014 MOV #$DRAM,R0
061 PRM11 011 019 $EXAMX: CLR R5
062 PRM11 015 009 PRM11 011 015 BIC #DEP,2(R1) ;CLEAR FLAG BIT
063 PRM11 017 014 $EXDEP: MOV #EBUSPC,@.STDTE ;E-BUS PARITY CLEAR
064
065 KLDCP 003 014 .IF EQ EPTREL
066 PRM11 015 010 PRM11 011 015 BIS #PHYS!PRTOFF,2(R1)
067 .IFF
068 PRM11 011 015 BIS $TADSP,2(R1) ;$TADSP DESIGNATES ADDR MODE
069 PRM11 015 010 MOV #PHYS!PRTOFF,$TADSP ;RESET ADDR MODE FOR NEXT EXDEP
070 .ENDC
071 TST VRBFLG
072 044 085 BEQ 70$
073 PRM11 015 047 BIT #KLRUN,@.DIAG1
074 044 085 BNE 70$
075 PRM11 011 014 PUSH R0
076 PRM11 009 003 PUSH @.DAT1 ;IF VERBOSE AND KL IS NOT RUNNING THEN USE
077 PRM11 009 003 PUSH @.DAT2 ;APR FLAGS TO DETERMINE NXM, ETC.
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 44.1␈↓'α
078 PRM11 009 003 PUSH @.DAT3
079 044 167 PRM11 011 014 MOV #$$CLRF,R0
080 PRM11 006 033 EXCT ;EXECUTE A CONO APR,23400 TO CLR NXM,IOPGF,MB PA
;R
081 PRM11 009 011 POP @.DAT3
082 PRM11 009 011 POP @.DAT2
083 PRM11 009 011 POP @.DAT1
084 PRM11 011 014 POP R0
085 PRM11 011 015 70$: MOV 2(R1),@.TENA1
086 PRM11 011 015 MOV (R1),@.TENA2 ;START DTE20
087 BEG11 002 053 PRM11 011 021 MOV EMTIMO,-(SP) ;SET TIMEOUT COUNT
088 PRM11 017 034 93$: BIT #DEXDON,@.STDTE ;TEST BIT
089 PRM11 023 029 BNE 94$ ;LEAVE IF NOW A ONE(OK)
090 PRM11 011 021 DEC (SP) ;DECREMENT COUNT
091 PRM11 023 022 BNE 93$ ;CONTINUE LOOP
092 TST RPTFLG ;OTHERWISE TIMEOUT
093 PRM11 023 029 BNE 94$ ;UNLESS UNDER REPEAT
094 TST VRBFLG
095 021 012 BEQ 95$
096 PRM11 011 014 PUSH R0
097 PRM11 006 040 044 097 PMSG <EXAM/DEPOSIT TIMEOUT, ADDRESS = >
098 PRM11 011 015 PRM11 011 014 MOV R1,R0
099 PRM11 011 014 PUSH 2(R0)
100 PRM11 011 014 BIC #177700,2(R0)
101 PRM11 004 025 PNTADR
102 PRM11 004 012 PCRLF
103 PRM11 011 015 POP 2(R1)
104 PRM11 011 014 POP R0
105 95$: CLR TENRUN ;CLEAR TEN RUNNING
106 PRM11 011 019 CLR R5 ;CLEAR BLOCK ZERO INDICATOR
107 PRM11 011 006 PRM11 011 021 BIS #CBIT,16(SP)
108 94$: TST VRBFLG
109 029 037 BEQ 96$
110 PRM11 015 047 BIT #KLRUN,@.DIAG1
111 029 037 BNE 96$ ;KL IS STILL RUNNING
112 PRM11 011 014 PUSH R0
113 PRM11 009 003 PUSH @.DAT1
114 PRM11 009 003 PUSH @.DAT2
115 PRM11 009 003 PUSH @.DAT3
116 PRM11 011 021 MOV #0,-(SP) ;PUSH FLAG
117 PRM11 011 014 MOV #110,R0
118 PRM11 007 004 DFRD ;BIT 7 IS APR NXM ERR IN
119 PRM11 012 028 BIT #BIT12,@.DAT2 ;BITS 4-19 (TEST BIT 7)
120 044 123 BEQ 89$ ;BRANCH IF NOT SET
121 PRM11 011 021 INC (SP) ;INC FLAG
122 PRM11 008 006 PMSG <MBOX DETECTED NXM\>
123 PRM11 012 025 89$: BIT #BIT10,@.DAT2 ;TEST BIT 9
124 044 127 BEQ 88$ ;EBUS BIT 9 IS APR MB PAR ERR IN
125 PRM11 011 021 INC (SP)
126 PRM11 008 006 PMSG <MB PARITY ERROR DETECTED\>
127 PRM11 012 026 88$: BIT #BIT11,@.DAT2 ;TEST BIT 8
128 044 131 BEQ 87$ ;EBUS BIT 8 IS APR I/O PF ERR IN
129 PRM11 011 021 INC (SP)
130 APT11 004 006 PMSG <IOPGF (PROB AR PAR ERR) DETECTED\>
131 PRM11 011 021 87$: TST (SP)+ ;TEST AND FLUSH FLAG, ZERO IF NO ERRORS DETECTED
132 044 142 BEQ 86$ ;BRANCH IF NO ERRORS
133 TST RPTFLG
134 044 142 BEQ 86$
135 PRM11 008 006 PMSG <ADDR = > ;ERROR UNDER REPEAT, GIVE ADDRESS
136 PRM11 011 015 PRM11 011 014 MOV R1,R0
137 PRM11 011 014 PUSH 2(R0)
138 PRM11 011 014 BIC #177700,2(R0)
139 PRM11 004 025 PNTADR
140 PRM11 004 012 PCRLF
141 PRM11 011 015 POP 2(R1)
142 PRM11 009 011 86$: POP @.DAT3
143 PRM11 009 011 POP @.DAT2
144 PRM11 009 011 POP @.DAT1
145 PRM11 011 014 POP R0
146 PRM11 011 021 96$: TST (SP)+ ;RESET STACK
147 PRM11 015 009 PRM11 011 015 BIT #DEP,2(R1)
148 CONS11 002 007 BNE 1$ ;DEPOSIT BRANCHES
149 PRM11 011 014 PUSH R0
150 PRM11 011 017 MOV .DAT3,R3
151 PRM11 011 017 PRM11 011 014 MOV (R3)+,(R0)+ ;BITS 20-35 FROM .DAT3
152 PRM11 011 017 PRM11 011 014 MOV (R3)+,(R0)+ ;BITS 04-19 FROM .DAT2
153 PRM11 011 017 PRM11 011 014 MOV (R3),(R0) ;BITS 00-03 FROM .DAT1
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 44.2␈↓'α
154 PRM11 011 014 BIC #177760,(R0)
155 PRM11 011 014 POP R0
156 PRM11 017 032 BIT #BPARER,@.STDTE ;E-BUS PARITY ERROR ?
157 CONS11 002 007 BEQ 1$ ;NO
158 PRM11 011 008 PRM11 011 021 BIS #CBIT!VBIT!NBIT!ZBIT,14(SP) ;SET ALL COND BITS
159 PRM11 011 019 1$: TST R5 ;EXAM, DPOS OR FINISHED BLOCK ZERO ?
160 CONS11 002 031 BEQ 2$ ;YES
161 PRM11 011 019 DEC R5 ;BLOCK ZERO, DECREMENT COUNT
162 PRM11 011 018 ADD #1,(R4) ;INCREMENT PDP-10 ADDRESS
163 PRM11 011 018 ADC 2(R4)
164 044 017 JMP $D10ZX ;CLEAR NEXT WORD
165 PRM11 008 043 2$: EXIT
166
167 $$CLRF: IO10 CONO,APR,,23400 ;CLEAR APR NXM, IO PG FAIL, MB PAR ERR
168 .EVEN
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 45␈↓'α
001 PRM11 011 018 $D10ADR:MOV #L10ADR,R4
002 PRM11 011 015 PRM11 011 018 MOVB (R1)+,(R4)+
003 PRM11 011 015 PRM11 011 018 MOVB (R1)+,(R4)+
004 PRM11 011 015 PRM11 011 018 MOVB (R1),(R4)
005 PRM11 011 018 BIC #177700,(R4)
006 PRM11 011 015 MOV #L10ADR,R1
007 PRM11 011 022 RTS PC
008
009
010 $EBPAR: .ASCIZ/?E-BUS PARITY ERROR /
011 .EVEN
012
013 PRM11 011 022 045 070 $DPSVT: JSR PC,$10ADR ;SETUP PARAMETERS
014
015 PRM11 011 014 $DPOSVR:PUSH R0
016 KLDCP 003 014 PRM11 009 003 .IIF NZ EPTREL, PUSH $TADSP ;PUSH ADDRESS SPACE
017 PRM11 006 042 DPOS
018 045 032 BCS $DPVRP
019 KLDCP 003 014 PRM11 009 011 .IIF NZ EPTREL, POP $TADSP ;USE SAME ADDRESS SPACE FOR VERIFY
020 PRM11 011 015 PRM11 011 014 MOV R1,R0
021 PRM11 006 040 EXAM
022 045 037 BCS $DPVRE
023 PRM11 011 021 PRM11 011 014 MOV (SP),R0
024 PRM11 011 015 PUSH R1 ;SAVE ADDRESS
025 PRM11 011 015 MOV #$DRAM,R1
026 PRM11 006 049 CMPR36
027 045 040 BCS $DPVRV ;VERIFY ERROR
028 PRM11 011 015 $DPVRY: POP R1
029 PRM11 011 014 $DPVRX: POP R0
030 PRM11 008 043 EXIT
031
032 $DPVRP: ;DEPOSIT HALF OF DEPOSIT VERIFY LOST.
033 KLDCP 003 014 PRM11 011 021 .IIF NZ EPTREL, TST (SP)+ ;ADJUST STACK (REMOVE ADDR. SPACE)
034 PRM11 011 007 PRM11 011 021 BIS #CBIT!NBIT,16(SP)
035 045 029 BR $DPVRX ;NO, JUST GIVE ERROR RETURN
036
037 PRM11 011 008 PRM11 011 021 $DPVRE: BIS #CBIT!ZBIT,16(SP) ;EXAMINE HALF OF DEPOSIT VERIFY LOST
038 045 029 BR $DPVRX
039
040 PRM11 011 009 PRM11 011 021 $DPVRV: BIS #CBIT!VBIT,20(SP) ;SET C & V FOR VERIFY ERROR
041 TST VRBFLG
042 045 028 BEQ $DPVRY
043 044 097 PMSG <\ADDRESS = >
044 PRM11 011 014 POP R0
045 PRM11 004 025 PNTADR
046 PRM11 008 006 PMSG <DEPOSIT DATA = >
047 PRM11 011 014 POP R0
048 PRM11 004 023 PNT36
049 PRM11 008 006 PMSG < EXAMINE DATA = >
050 PRM11 011 014 MOV #$DRAM,R0
051 PRM11 004 023 PNT36
052 PRM11 004 012 PCRLF
053 PRM11 008 043 EXIT
054
055 ;5-BYTE COMPARE ROUTINE, C & V BIT SET IF ERROR
056
057 PRM11 011 015 $CMP36: PUSH R1
058 PRM11 011 016 MOV #5,R2
059 PRM11 011 014 PRM11 011 015 1$: CMPB (R0)+,(R1)+
060 CONS11 002 031 BNE 2$
061 PRM11 011 016 DEC R2
062 CONS11 002 007 BNE 1$
063 CONS11 005 001 BR 3$
064 PRM11 011 009 PRM11 011 021 2$: BIS #CBIT!VBIT,16(SP) ;SET C & V FOR VERIFY ERROR
065 PRM11 011 014 3$: POP R0 ;POINT TO ACTUAL
066 PRM11 008 043 EXIT
067
068 ;PDP-10 ADDRESS PARAMETER SETUP
069
070 PRM11 011 019 $10ADR: MOV $EMADR,R5 ;SETUP TRAILING PARAMETER PICKUP
071 PRM11 011 015 MOV #L10ADR+2,R1 ;SETUP 10 ADR BLOCK POINTER
072 PRM11 011 015 CLR (R1) ;CLEAR HI ADR
073
074 PRM11 011 019 PRM11 011 015 MOV (R5)+,-(R1) ;SETUP PDP-10 ADDRESS
075 PRM11 011 019 PRM11 011 014 MOV (R5),R0 ;POINTER TO DATA BLOCK IN R0
076 PRM11 011 021 ADD #4,14(SP) ;RETURN OVER TRAILING PARAMETERS
077 PRM11 011 022 RTS PC
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 46␈↓'α
001 ;START MICROCODE
002
003 PRM11 011 014 $SM: PUSH R0
004 PRM11 006 024 MRESET ;RESET KL10
005 PRM11 011 014 CLR R0 ;SELECT UCODE START ADR
006 PRM11 006 020 WWADR
007 PRM11 007 002 DFXCTT ;GET CLOCK GOING
008 PRM11 018 004 STRCLK
009
010 PRM11 011 015 MOV #2,R1
011 046 027 PRM11 011 014 MOV #$SMTAB,R0
012 PRM11 011 014 1$: PUSH R0
013 PRM11 006 033 EXCT ;DO TEN INSTR
014 CONS11 002 031 BCS 2$
015 PRM11 011 014 POP R0
016 PRM11 011 014 ADD #5,R0 ;NEXT
017 PRM11 011 015 DEC R1
018 CONS11 002 007 BNE 1$
019
020 PRM11 011 014 POP R0
021 PRM11 008 043 EXIT
022
023 PRM11 011 014 2$: POP R0
024 PRM11 011 014 POP R0
025 PRM11 008 051 $SMERR: EXITERR
026
027 $SMTAB: IO10 CONO,APR,,200000 ;IO SYS CLEAR
028 IO10 CONO,PI,,10000 ;PI SYS CLEAR
029 .EVEN
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 47␈↓'α
001 ;PDP-10 INSTRUCTION EXECUTE
002
003 PRM11 006 034 $XCT: LODAR
004 CONS11 034 069 BCS 6$
005 PRM11 007 002 DFXCTT ;SET CONTINUE BUTTON
006 PRM11 019 022 CONBUT
007 PRM11 007 002 DFXCTT ;RUN THE CLOCK
008 PRM11 018 004 STRCLK
009
010 TST RPTFLG ;DOING REPEAT ?
011 CONS11 002 031 BNE 2$ ;YES, NO CHECK
012
013 PRM11 011 015 MOV #1000.,R1
014 PRM11 015 046 4$: BIT #HALTLP,@.DIAG1
015 CONS11 002 031 BNE 2$
016 PRM11 011 015 DEC R1 ;NO, WAITED LONG ENOUGH
017 CONS11 004 051 BNE 4$
018 046 025 6$: BR $SMERR
019
020 PRM11 008 043 2$: EXIT
021
022 ;ECLOK - GIVE A COMPLETE EBOX CLOCK
023
024 PRM11 011 019 $ECLOK: MOV #4000.,R5
025
026 PRM11 007 012 91$: DFSCLK ;STEP RAW CLOCK
027 PRM11 007 005 DFRDT ;READ CLOCK STATE
028 104
029 PRM11 012 008 BIT #BIT2,@.DAT3 ;CLK E BOX SOURCE HIGH ?
030 PRM11 023 012 BNE 92$
031 PRM11 011 019 DEC R5
032 PRM11 023 005 BNE 91$
033 TST RPTFLG
034 PRM11 023 012 BNE 92$
035 PRM11 011 006 PRM11 011 021 BIS #CBIT,14(SP) ;REPORT TIMEOUT
036
037 PRM11 007 002 92$: DFXCTT
038 PRM11 018 007 CECLK
039 PRM11 008 043 EXIT
␈↓& PDP10 OPERATIONS SUB11.PAL[KL,SYS] 10/05/77 Page 48␈↓'α
001 ;PDP-10 CONTROLLED STOP ROUTINE
002
003 PRM11 011 014 $TENSP: PUSH R0
004 CLR TENRUN ;CLEAR LOGICAL TEN RUNNING FLAG
005 ;;;;; CLR TENCLK ;CLEAR TEN USING CLOCK FLAG
006 ;;;;; DON'T CLEAR TENCLK. YOU MIGHT WANT TO CONTINUE THE SYSTEM
007
008 PRM11 019 020 MOV #DCOMST!DFUNC!<CLRRUN*1000>,@.DIAG1
009 PRM11 011 022 BR11 005 014 JSR PC,$$DFXDN ;CLEAR RUN FLOP
010
011 PRM11 011 015 MOV #1000.,R1
012 PRM11 015 046 1$: BIT #HALTLP,@.DIAG1
013 CONS11 002 031 BNE 2$ ;TEN RETURNED TO HALT LOOP
014 PRM11 011 015 DEC R1
015 CONS11 002 007 BNE 1$
016 CONS11 024 048 BR 5$ ;FAILED TO RETURN TO HALT LOOP
017
018 PRM11 007 005 2$: DFRDT
019 131
020 PRM11 012 006 BIT #BIT1,@.DAT2 ;BIT 18, CON CACHE LOOK
021 CONS11 004 051 BEQ 4$ ;FALSE, CACHE IS NOT ON
022
023 CONS11 025 043 PRM11 011 014 MOV #$$CF,R0
024 PRM11 006 033 EXCT ;EXECUTE CACHE FLUSH
025 CONS11 024 048 BCS 5$ ;FAILED
026
027 PRM11 011 015 MOV #1000.,R1
028 PRM11 007 005 3$: DFRDT
029 110
030 PRM11 012 008 BIT #BIT2,@.DAT1 ;BIT 1, SWEEP BUSY ENABLE
031 CONS11 004 051 BEQ 4$ ;FINISHED SWEEP
032 PRM11 011 015 DEC R1
033 CONS11 005 001 BNE 3$
034 CONS11 024 048 BR 5$ ;FAILED TO FINISH CACHE SWEEP
035
036 PRM11 011 014 4$: POP R0 ;SUCESSFUL RETURN
037 PRM11 008 043 EXIT
038
039 PRM11 011 014 5$: POP R0 ;FAILED RETURN
040 PRM11 008 051 EXITERR
␈↓& CLOCK INITIALIZATION, INTERRUPTS SUB11.PAL[KL,SYS] 10/05/77 Page 49␈↓'α
001 .SBTTL CLOCK INITIALIZATION, INTERRUPTS
002 KLDCP 002 006 .IF DF SAILVR
003
004 PRM11 011 014 CLKSTA: PUSH R0
005 PRM11 034 003 PRM11 011 014 MOV #KWLIV,R0
006 049 027 PRM11 011 014 MOV #CLKINT,(R0)+
007 PRM11 012 045 PRM11 011 014 MOV #CPUPR,(R0)
008 CLR KTIMBS ;ASSUME WE'RE NOT KEEPING TIMEBASE
009 PRM11 011 014 MOV #TIMBAS,R0
010 PRM11 011 014 CLR (R0)+
011 PRM11 011 014 CLR (R0)+
012 PRM11 011 014 CLR (R0)
013 PRM11 011 014 MOV #TIM11,R0
014 PRM11 011 014 CLR (R0)+
015 PRM11 011 014 CLR (R0)+
016 PRM11 011 014 CLR (R0)
017 CLR CLKFLG
018 PRM11 034 005 BIC #300,KWLKS ;CLEAR CLOCK FLAG AND INTERRUPT ENABLE
019 PRM11 034 005 1$: TSTB KWLKS
020 CONS11 002 007 BPL 1$ ;LOOP UNTIL CLOCK FLAG COMES ON
021 PRM11 034 005 BIC #200,KWLKS ;CLEAR CLOCK FLAG
022 PRM11 034 005 BIS #100,KWLKS ;SET INTERRUPT ENABLE.
023 PRM11 011 014 POP R0
024 PRM11 011 022 RTS PC
025
026
027 PRM11 034 005 CLKINT: BIC #200,KWLKS ;CLEAR CLOCK FLAG
028 INC CLKFLG ;INCREMENT SOFTWARE CLOCK FLAG
029 INC TIM11
030 ADC TIM11+2
031 ADC TIM11+4
032 TST FSCLKA
033 CONS11 005 001 BEQ 3$ ;NO FS CLOCK REQUESTS
034 CMP TIM11+4,FSRTIM+4
035 CONS11 002 031 BGT 2$
036 CONS11 005 001 BNE 3$
037 CMP TIM11+2,FSRTIM+2
038 CONS11 002 031 BGT 2$
039 CONS11 005 001 BNE 3$
040 CMP TIM11,FSRTIM
041 CONS11 005 001 BLT 3$
042 PRM11 011 014 2$: PUSH R0
043 PRM11 011 014 MOV FSCLKA,R0
044 CLR FSCLKA
045 PRM11 011 022 PRM11 011 014 JSR PC,@R0
046 PRM11 011 014 POP R0
047 3$: TST KTIMBS
048 CONS11 004 051 BEQ 4$ ;JUMP IF NOT KEEPING A TIMEBASE
049 INC TIMBAS
050 ADC TIMBAS+2
051 ADC TIMBAS+4
052 PRM11 035 023 BEG11 002 021 4$: BIT #DLRTS,@$FSTKS ;SEE IF REQUEST TO SEND IS UP (CLEARED BY INIT)
053 CONS11 024 048 BNE 5$ ;YES, HAVEN'T BEEN RESET
054 PRM11 011 022 CONS11 062 086 JSR PC,HANGU1
055 5$: RTT ;DISMISS INTERRUPT
056
057 .ENDC
Symbol Table for: SUB11.PAL[KL,SYS] 10/05/77 Page I
$$CLRF 044 167 $PBELL 013 008 $TILF 023 034 1$ 025 054 2$ 043 023 51$ 029*022
$$ILOA 002 007 $PCOMM 006 046 $TILN1 = 021 013 1$ 025 075 2$ 044 165 52$ 029 027
$$P23 013 046 $PCRLF 013 003 $TILN2 = 021 022 1$ 026 010 2$ 045 064 6$ 009 015
$$PEX 014 046 $PFORC 020 015 $TILN3 020 033 1$ 027 005 2$ 046 023 6$ 011 052
$$PEX1 017 038 $PH1 005 019 $TILNX 021 009 1$ 028 020 2$ 047 020 6$ 016 037
$$PEX2 = 018 042 $PH2 005 016 $TILRN 020 027 1$ 031 013 2$ 048 018 6$ 017 029
$$PEX3 020 023 $PLDBU 007 003 $TIMOT 037 007 1$ 032 026 2$ 049 042 6$ 027 035
$$PEX4 = 034 019 $PLPT 011 005 $TIRDY 025 003 1$ 033 013 21$ 002 066 6$ 029 014
$$PEX5 032 006 $PNORM 020 022 $TIRUB 022 028 1$ 035 004 21$ 021 020 6$ 047 018
$$PEX6 026 037 $PNT18 014 003 $TMINU 026 040 1$ 035 010 21$ 028 044 69$ 030 022
$$PEX7 026 038 $PNT23 014 011 $TOCTE 034 009 1$ 035 034 3$ 002 110 7$ 009 026
$$PMSG 035 022 $PNT36 014 025 $TOOUT 025 063 1$ 036 004 3$ 004 009 7$ 016 043
$$PMSR 035 017 $PNTAL 006 003 $TORDY 025 038 1$ 036 016 3$ 006 027 7$ 017 031
$$PNTX 006 038 $PNTBA 007 036 $TTALT 018 032 1$ 042 014 3$ 007 019 7$ 027 029
$$PSX2 = 018 044 $PNTCH 006 036 $TTBAC 019 028 1$ 043 011 3$ 008 032 7$ 029 029
$10ADR 045 070 $PNTCI 035 028 $TTBTR 033 004 1$ 043 018 3$ 009 012 70$ 044 085
$CKSUM 002 130 $PNTDE 017 003 $TTCOC 034 003 1$ 044 159 3$ 011 025 71$ 028 045
$CMCLR 002 124 $PNTNB 006 031 $TTERM 033 008 1$ 045 059 3$ 012 021 8$ 009 029
$CMP36 045 057 $PNTO 016 009 $TTI36 028 010 1$ 046 012 3$ 014 043 8$ 017 033
$D10AD 045 001 $PNTOC 016 003 $TTIBR 032 003 1$ 048 012 3$ 016 028 8$ 030 001
$D10MO 044 023 $PNTOD 013 017 $TTICH 018 003 1$ 049 019 3$ 017 018 80$ 021 031
$D10ZR 044 006 $PNTOS 016 008 $TTIDE 027 003 10$ 009 033 3$ 018 047 80$ 026 050
$D10ZX 044 017 $PNTRS 007 046 $TTILI 021 007 10$ 012 025 3$ 025 032 81$ 021 038
$DELAY 036 003 $PNTSP 019 018 $TTILN 021 003 10$ 016 019 3$ 025 061 81$ 026 051
$DPOS 044 035 $PODCD 013 032 $TTIOC 026 008 10$ 022 013 3$ 027 022 81$ 030 008
$DPOST 044 033 $PODMV 015 031 $TTITR 033 003 10$ 030 015 3$ 029 001 82$ 022 001
$DPOSV 045 015 $PODT 013 014 $TTIX1 018 009 10$ 032 035 3$ 031 022 82$ 026 052
$DPOSX 044 037 $PRGHL 005 003 $TTIX2 018 011 10$ 042 034 3$ 032 024 83$ 022 007
$DPSVT 045 013 $PRINT 008 003 $TTIYE 019 007 10$ 042 039 3$ 033 020 86$ 044 142
$DPSX1 044 049 $PROL3 015 038 $TTLOO 018 019 11$ 002 065 3$ 042 057 87$ 044 131
$DPVRE 045 037 $PRT36 015 001 $TTPIN 007 043 11$ 006 020 3$ 045 065 88$ 044 127
$DPVRP 045 032 $PSLAS 006 043 $TTS36 034 024 11$ 008 021 3$ 048 028 89$ 044 123
$DPVRV 045 040 $PSPAC 006 040 $TTSDL 032 010 11$ 009 042 3$ 049 047 9$ 009 030
$DPVRX 045 029 $PTAB 006 049 $TTSDO 034 016 11$ 022 020 32$ 011 032 9$ 017 036
$DPVRY 045 028 $PTCO 012 044 $TTSDX 032 037 12$ 010 004 4$ 002 120 9$ 027 034
$EBPAR 045 010 $PTTY 009 003 $XCT 047 003 12$ 030 019 4$ 003 027 9$ 030 023
$ECLOK 047 024 $PTTY1 010 034 .EP 003 008 13$ 010 024 4$ 006 012 90$ 012 032
$EMTAD 038 029 $PTTY2 010 039 .HC 005 036 14$ 010 026 4$ 008 037 91$ 047 026
$EMTAE = 041 072 $PTTYC 012 003 .TD 036 010 15$ 010 032 4$ 009 013 92$ 047 037
$EMTRP 038 008 $PWRDN 042 003 1$ 002 010 16$ 010 019 4$ 011 046 93$ 044 088
$EOP 003 019 $PWRUP 042 009 1$ 002 029 17$ 010 022 4$ 012 039 94$ 044 108
$EOPSE 003 003 $REGRS 036 031 1$ 002 125 19$ 008 018 4$ 016 034 95$ 021 012
$EOR 037 014 $REGSA 036 024 1$ 003 015 19$ 009 040 4$ 017 019 95$ 044 105
$EOR2 037 028 $RESVD 037 011 1$ 003 037 2$ 002 133 4$ 025 036 96$ 029 037
$EROP 004 021 $SBRIN 002 019 1$ 005 014 2$ 004 001 4$ 027 025 96$ 044 146
$ERREO 004 016 $SETFL 043 006 1$ 005 039 2$ 006 023 4$ 029 004 97$ 029 005
$ERRHL 005 007 $SHFTL 035 009 1$ 006 016 2$ 007 021 4$ 031 025 98$ 028 037
$ESYNC 041 074 $SHFTR 035 003 1$ 007 013 2$ 008 030 4$ 042 069 99$ 008 014
$EXAM 044 058 $SHFTX 035 007 1$ 007 039 2$ 009 008 4$ 047 014 99$ 011 015
$EXAMT 044 052 $SM 046 003 1$ 008 019 2$ 011 023 4$ 048 036 99$ 022 024
$EXAMX 044 061 $SMERR 046 025 1$ 009 005 2$ 012 019 4$ 049 052 99$ 028 021
$EXDEP 044 063 $SMTAB 046 027 1$ 010 035 2$ 013 023 41$ 011 031 ADDR = 044*135
$EXIT 043 010 $STUF 037 021 1$ 010 042 2$ 014 029 42$ 011 029 ADDRES = 044 097
$EXITE 043 003 $SWITC 020 003 1$ 011 018 2$ 016 024 43$ 011*041 ADDRES = 045 043
$EXITS 043 009 $SWTSA 020 010 1$ 011 076 2$ 017 017 44$ 011 044 CLKINT 049 027
$FATAL 037 031 $TENSP 048 003 1$ 012 034 2$ 018 043 45$ 011*039 CLKSTA 049 004
$FATLE 037 003 $TI36C 030 050 1$ 013 020 2$ 021 014 5$ 011 047 DATA = 045 046
$ILLUP 042 004 $TIALT 023 017 1$ 014 031 2$ 022 042 5$ 012 042 DATA = 045 049
$LPTOF 011 079 $TIBEL 023 010 1$ 015 008 2$ 025 015 5$ 016 036 LP20DN 011 067
$MULTP 031 003 $TIBKS 023 021 1$ 015 028 2$ 025 057 5$ 017 023 MEMPE 043 015
$NOTAS 037 027 $TICC 023 025 1$ 016 020 2$ 026 028 5$ 025 012 NEG36 030 039
$P18X = 014 027 $TICL 023 029 1$ 017 013 2$ 027 015 5$ 027 031 NOPAR 002 122
$P23X = 014 030 $TICO 023 038 1$ 018 045 2$ 028 031 5$ 029 019 SHFT36 030 028
$P23Y 014 013 $TICR 023 007 1$ 019 024 2$ 031 019 5$ 031 037 SWR = 002 104
$P36B 014 019 $TICRA 034 032 1$ 020 005 2$ 033 018 5$ 048 039 TILINA 024 014
$P36BX 014 026 $TICU 023 003 1$ 020 037 2$ 036 017 5$ 049 055 TILINC 024 003
$P36MV 015 025 $TICX 023 043 1$ 022 034 2$ 042 051 50$ 011 055 TRMTAB 033 023
$PADR 013 039 $TIEXT 023 012 1$ 025 009